“模板参数推导机制无法推导函数的返回值类型”,不知道这是什么意思。
下面这个例子是不是说明这个问题的?
#include <iostream>
using namespace std;
int Foo()
{
return 1;
}
template <class T>
T Foobar()
{
return Foo();
}
int main(int argc, char **argv)
{
//cout << Foobar() << endl; // error C2783: “T Foobar(void)”: 未能为“T”推导 模板 参数
cout << Foobar<int>() << endl; // 1
return 0;
}
《STL源码剖析》书中介绍的解决办法是声明内嵌类型,在类中用typedef以“记住”所需的类型。
本文通过一个具体的C++示例介绍了模板参数推导机制在函数返回值类型上的局限性,并探讨了如何通过声明内嵌类型来解决这一问题。
101

被折叠的 条评论
为什么被折叠?



