C++ 自动类模板?
有没有办法让编译器自动推断模板参数C++ 自动类模板?,c++,templates,C++,Templates,有没有办法让编译器自动推断模板参数 template<class T> struct TestA { TestA(T v) {} }; template<class T> void TestB(T v) { } int main() { TestB (5); } 模板 结构测试 { 种皮(tV){} }; 模板 无效测试B(T v) { } int main() { TestB(5); } 测试B工作正常,但是当我将其更改为TestA时,它将不会
template<class T>
struct TestA
{
TestA(T v) {}
};
template<class T>
void TestB(T v)
{
}
int main()
{
TestB (5);
}
模板
结构测试
{
种皮(tV){}
};
模板
无效测试B(T v)
{
}
int main()
{
TestB(5);
}
测试B工作正常,但是当我将其更改为TestA时,它将不会编译,错误为“使用类模板需要模板参数列表”不,没有。类模板永远不会被推导出来。通常的模式是有一个
make\uu
free功能:
template<class T> TestA<T> make_TestA(T v)
{
return TestA<T>(v);
}
避免为局部变量指定类型。Sunlight是正确的,但如果我可以问你一个问题:这真的是你代码中的问题吗。我的意思是:
TestA(5);
将成为
TestA<int>(5);
TestA(5);
只要它只是一个模板参数,就没那么糟糕了。在大多数情况下,你不可能只键入一次类型。事实上,这确实是一个问题,是的。在泛型代码中,您通常无法很容易地拼写出类型。
TestA<int>(5);