Qual é o ponto da especialização de template em C ++ se você pode fazer o mesmo sem templates?

E

Aqui está um exemplo simples:

#include <iostream>

template <class T>
void print(T in){ 
  printf("NOT printing int\n"); 
}

template <> // <-- template specialization
void print<int>(int in){ 
  printf("printing int\n"); 
}

int main(){
 print(5); // printing int
 return 0;
}

Mas a intversão pode ser escrita mesmo sem usar modelos, como este:

void print(int in){ 
  printf("printing int\n"); 
}

Então, qual é o ponto de especialização de modelo aqui?

Editar (exemplo de onde pode ser necessário)

#include <iostream>

template <class T>
void print(){ 
  printf("printing float\n"); 
}

template <> 
void print<int>(){ 
  printf("printing int\n"); 
}

int main(){
 print<float>();
 return 0;
}
Eerorika

A questão é que você não pode fazer tudo com sobrecargas. Considere, por exemplo, um caso em que não há argumento:

template<class T>
void foo();

Não há como sobrecarregar essa função porque não há argumentos. Mas pode ser chamado com instanciação explícita:

foo<int>();

E essas instanciações podem ser especializadas.

Depois, há especializações de modelo de classe que, obviamente, não podem ser feitas usando sobrecarga de função.


Há alguma sobreposição entre o que pode ser feito com sobrecargas e o que pode ser feito com a especialização de modelo. Normalmente é considerado melhor usar uma sobrecarga quando for uma opção.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como você pode verificar se existe o mesmo item em uma matriz e fazer algo diferente?

Qual é a finalidade da tabela de vinculação gerada automaticamente se você não pode usá-la em seu aplicativo C # Windows (usando Linq)?

Você pode fazer a transição de uma propriedade de exibição? Se não, qual é a melhor solução?

Em eventos de desfoque / foco, como você pode fazer o desfoque não disparar se o próximo foco estiver no mesmo elemento pai?

Especialização de template C ++ em submodelos

Qual é o ponto de nomear expressões de função se você não pode realmente referenciá-los pelos nomes que você dá a eles?

Qual é a solução se você ficar sem letras em um código longo em R?

Uma especialização parcial pode se referir a sizeof (T) na lista de argumentos da especialização?

Qual é o ponto da declaração MyType (myVar) em C ++?

qual é o ponto de continuações forçadas em procedimentos armazenados CosmosDB se você precisa de transação ACID

Qual é o propósito do karate-junit5 quando você pode fazer testes sem ele?

Você pode fazer adição de vetores em Java, nativamente?

Especialização de template C ++

Até que ponto na seção <head> você pode colocar com segurança o código do Gerenciador de tags do Google?

Como analisar o valor de retorno da lista em uma expressão sympy na qual você pode substituir os valores?

Como você pode fazer um enum sinalizadores serializar seus valores de combinação numericamente em C #?

Como você pode fazer um enum sinalizadores serializar seus valores de combinação numericamente em C #?

Como você pode fazer um enum sinalizadores serializar seus valores de combinação numericamente em C #?

No XCode 6, como você pode definir um ponto de controle sem interromper a execução?

Você pode abreviar o acesso de notação de ponto às propriedades em Swift?

Qual é o ponto de criptografar qualquer coisa no Android (ou Java) se o código-fonte pode sofrer engenharia reversa?

Esta função pode ser escrita em estilo sem ponto? Se não, por que?

Em C ++, qual é o ponto de std :: array se o tamanho precisa ser determinado em tempo de compilação?

Por que você não pode usar um ponto de interrogação em um loop for batch?

Você pode usar QT em uma construção ReadTheDocs sem fazer mocking?

Você pode importar o mesmo módulo em várias classes (qual é a convenção aceita em Python)?

Você pode instanciar a versão não especializada de um modelo e herdar dele dentro da especialização?

Especialização de template parcial em C ++ 98?

argumento string na especialização de template em C ++

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    UITextView não está exibindo texto longo

  3. 3

    Dependência circular de diálogo personalizado

  4. 4

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  5. 5

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  6. 6

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  7. 7

    Setas rotuladas horizontais apontando para uma linha vertical

  8. 8

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  9. 9

    Definir um clipe em uma trama nascida no mar

  10. 10

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  11. 11

    Como dinamizar um Dataframe do pandas em Python?

  12. 12

    regex para destacar novos caracteres de linha no início e no fim

  13. 13

    Why isn't my C# .Net Core Rest API route finding my method?

  14. 14

    Como obter a entrada de trás de diálogo em treeview pyqt5 python 3

  15. 15

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  16. 16

    How to create dynamic navigation menu select from database using Codeigniter?

  17. 17

    Como recuperar parâmetros de entrada usando C #?

  18. 18

    Changing long, lat values of Polygon coordinates in python

  19. 19

    Livros sobre criptografia do muito básico ao muito avançado

  20. 20

    Método \ "POST \" não permitido no framework Django rest com ações extras & ModelViewset

  21. 21

    Pesquisa classificada, conte números abaixo do valor desejado

quentelabel

Arquivo