Eu tenho uma função de modelo com um argumento. Tenho que instanciar essa função sem chamar essa função significa explicitamente que tenho que instanciar.
Tenho esta função:
template <class T> int function_name(T a) {}
Eu instanciei essa função assim:
template int function_name<int>(int);
Mas recebi os seguintes erros:
error: expected primary-expression before 'template'
error: expected `;' before 'template'
template<>
forma. O que ele escreveu é diferente de especialização . 1 por me ensinar essa coisa nova. Estou removendo minha postagem. : DSeu código está correto.
A mensagem de erro pertence a um local no código que você não citou aqui.
Atualizar:
O código original era
e estava correto.
Mas não foi citado e, portanto, tinha a seguinte aparência:
Ele gera o seguinte erro
o que é claramente diferente do que OP citou.
Nesta variante, a segunda linha está ok (
<int>
pode ser omitida aqui), mas a primeira linha está com defeito. O compilador não pode adivinhar queT
é um parâmetro de modelo.fonte
template int function_name( T a) { }
etemplate int function_name(int);