Questions tagged «function-templates»


4
为什么功能模板不能部分专业化?
我知道语言规范禁止 对功能模板进行部分专业化。 我想知道为什么它禁止这样做的理由?它们没有用吗? 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
为什么此模板功能无法正常运行?
我在阅读有关模板函数的信息,并对这个问题感到困惑: #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); // f(int) g(1.0); // d f(int), this is surprising …

5
如何在模板中返回正确的数据类型?
#include <iostream> using namespace std; template <class X, class Y> Y big(X a, Y b) { if (a > b) return (a); else return (b); } int main() { cout << big(32.8, 9); } 在这里,我在CPP中使用模板,因此,当我big绕过doubleand int类型的参数调用函数时,我希望返回的答案是double。这里的类型,它返回32而不是32.8。 如何获得所需的输出?如何编写适当的返回类型的big函数?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.