“模板参数推导机制无法推导函数的返回值类型”,不知道这是什么意思。
下面这个例子是不是说明这个问题的?
#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以“记住”所需的类型。