Pytania otagowane jako function-templates


4
Dlaczego szablon funkcji nie może być częściowo wyspecjalizowany?
Wiem, że specyfikacja języka zabrania częściowej specjalizacji szablonu funkcji. Chciałbym poznać uzasadnienie, dlaczego tego zabrania? Czy nie są przydatne? template<typename T, typename U> void f() {} //allowed! template<> void f<int, char>() {} //allowed! template<typename T> void f<char, T>() {} //not allowed! template<typename T> void f<T, int>() {} //not allowed!

2
Dlaczego ta funkcja szablonu nie działa zgodnie z oczekiwaniami?
Czytałem o funkcjach szablonów i ten problem mnie pomieszał: #include <iostream> void f(int) { std::cout << "f(int)\n"; } template<typename T> void g(T val) { std::cout << typeid(val).name() << " "; f(val); } void f(double) { std::cout << "f(double)\n"; } template void g<double>(double); int main() { f(1.0); // f(double) f(1); // …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.