自动类模板?

3 c++ templates

有没有办法让编译自动推导出模板参数?

template<class T> 
struct TestA 
{
    TestA(T v) {} 
};
template<class T>
void TestB(T v)
{
}
int main()
{
    TestB (5);
}
Run Code Online (Sandbox Code Playgroud)

测试B工作正常,但是当我将其更改为TestA时,它将无法编译错误"使用类模板需要模板参数列表"

小智 11

不,没有.永远不会推断出类模板.通常的模式是具有make_自由功能:

template<class T> TestA<T> make_TestA(T v)
{
    return TestA<T>(v);
}
Run Code Online (Sandbox Code Playgroud)

例如,见std::pairstd::make_pair.

在C++ 0x中,您将能够做到

auto someVariable = make_TestA(5);
Run Code Online (Sandbox Code Playgroud)

避免必须指定局部变量的类型.