Witam, w tej chwili uczę się stosunkowo nowego tematu dotyczącego szablonów funkcji i często się mylę, mam taki kod:
#include <iostream>
template <typename T> void mul(T a, T b);
int main() {
double a = 1.5, b = 2;
mul<double>(a, b);
}
template <typename T> void mul(T a, T b) {
std::cout << a*b << std::endl;
}
Działa on jak najbardziej poprawnie. Tworzymy tu jawną konkretyzację podczas użycia funkcji w programie, jednak zrobiłem tez coś takiego:
#include <iostream>
template <typename T> void mul(T a, T b);
int main() {
template void mul<double>(double, double);
double a = 1.5, b = 2;
mul(a, b);
}
template <typename T> void mul(T a, T b) {
std::cout << a*b << std::endl;
}
Przykład zrobiłem dokładnie na tej samej zasadzie co przykład w książce, umieściłem deklaracje jawnej konkretyzacji w funkcji. Mam błąd kompilacji:
jawne tworzenie instancji szablonu może nastąpić tylko w zakresie przestrzeni nazw
Nie wiem co zrobiłem źle i czy w ogóle dobrze zrozumiałem temat...
Będę wdzięczny za pomoc.