Mam funkcję szablonu z jednym argumentem. Muszę utworzyć wystąpienie tej funkcji bez wywoływania tej funkcji, co oznacza jawnie, że muszę utworzyć wystąpienie.
Mam taką funkcję:
template <class T> int function_name(T a) {}
Utworzyłem tę funkcję w następujący sposób:
template int function_name<int>(int);
Ale mam następujące błędy:
error: expected primary-expression before 'template'
error: expected `;' before 'template'
template<>
formy. To, co napisał, różni się od specjalizacji . +1 za nauczenie mnie tej nowej rzeczy. Usuwam swój post. : DTwój kod jest poprawny.
Komunikat o błędzie dotyczy miejsca w kodzie, którego tutaj nie zacytowałeś.
Aktualizacja:
Oryginalny kod to
i to było poprawne.
Ale nie zostało zacytowane i dlatego wyglądało tak:
Generuje następujący błąd
co wyraźnie różni się od cytowanego przez OP.
W tym wariancie druga linia jest w porządku (
<int>
można ją tutaj pominąć), ale pierwsza linia jest uszkodzona. Kompilator nie może odgadnąć, żeT
jest to parametr szablonu.źródło
template int function_name( T a) { }
itemplate int function_name(int);