我可以在make_tuple中编写使用类型推导的东西吗?

时间:2012-07-01 16:40:33

标签: c++ templates template-deduction

我可以写make_tuple<int,bool>(1,true)或写make_tuple(1,true),编译器会推断它的类型。这种能力是否适用于我编写的代码,还是以某种方式构建到我无法访问的编译器中?

4 个答案:

答案 0 :(得分:1)

模板参数推导(适当的名称)是所有功能模板的标准强制要求。应该遵循的过程在C ++ 11的第14.8.2节中进行了解释。

答案 1 :(得分:1)

以下是一个例子:

template <typename... Ts>
tuple<Ts...> my_make_tuple(Ts... ts)
{
    return tuple<Ts...>(ts...);
}

注意:这不使用完美转发或任何其他技巧。这只是一个例子,说明如何编写自己的函数来进行参数推导。

答案 2 :(得分:0)

如果扣除是明确的,编译器将能够推断出类型。否则,您可能需要以这些模板参数的形式为编译器提供提示。

答案 3 :(得分:0)

make_tuple函数只是一个普通的函数模板。你可以自己做同样的事情。