c++ - 自动类模板?

标签 c++ templates

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

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::pairstd::make_pair

在 C++0x 中你将能够做到

auto someVariable = make_TestA(5);

避免必须为局部变量指定类型。

关于c++ - 自动类模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/285372/

相关文章:

c++ - 在 C++ 中逐字循环时读取行尾

c++ - 这个关于类模板中静态的编译器错误是什么意思?

c++ - 专用结构/类中未识别的数据成员

c++ - 如何在 C++ 中对长 vector 使用 std::sort()?

c++ - string::insert 中不同返回类型背后的原因是什么?

C++ - 奇怪的函数返回值

c++ - 查找全局变量而不是在 C++ 函数中构造它们

c++ - "No matching function call to..."用于模板函数

c++ - 为什么模板类允许无法编译的成员函数?

c++ - C++ 是否允许在可变参数模板参数之后使用普通参数?