Witam, mam problem i kompletnie nie wiem jak z niego wybrnąć. Otóż ucząc się z książki c++ szkoła programowania i będąc na etapie szablonów funkcji natknąłem na ciekawy temat dotyczący jawnych specjalizacji. Mam IDE visual studio 2017 community i ogólnie spiera on najnowsze standardy c++. Oto prosty kod:
#include <iostream>
template<> void f <char>(char c) {
//
}
int main(){
//
}
Jak na razie funkcja nic konkretnego nie robi. Mam błąd kompilacji:
f to nie jest szablon
Przepisuje definicje dokładnie tak samo jak jest w książce, tą funkcje to akurat skopiowałem ze strony Microsoftu by się jeszcze bardziej upewnić że nie robię błędu. Czemu to nie działa .
Zastosowałem jeszcze inny (technicznie taki sam) przykład tym razem prototypu:
template<> void MySwap(double a, double b);
Błędy:
Błąd C2912 jawna specjalizacja "void MySwap(double,double)" nie jest specjalizacją szablonu funkcji
"MySwap" nie jest nazwą klasy lub szablonu funkcji w bieżącym zasięgu testy c:\Users\komputer\Desktop\Jakub\programowanie\c++\C++ SP VI wyd\eksperymenty i programy\testy\testy\testy.cpp
Ogólnie staram się zachować zawsze zimną krew ale tym razem mnie nerwy mega tłuką :/ Z góry dziękuje za pomoc.