有没有办法让编译自动推导出模板参数?
template<class T>
struct TestA
{
TestA(T v) {}
};
template<class T>
void TestB(T v)
{
}
int main()
{
TestB (5);
}
测试 B 工作正常,但是当我将它更改为 TestA 时,它不会编译并出现错误“类模板的使用需要模板参数列表”
最佳答案
不,没有。永远不会推导类模板。通常的模式是有一个 make_
自由函数:
template<class T> TestA<T> make_TestA(T v)
{
return TestA<T>(v);
}
例如,参见 std::pair
和 std::make_pair
。
在 C++0x 中你将能够做到
auto someVariable = make_TestA(5);
避免必须为局部变量指定类型。
关于c++ - 自动类模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/285372/