我可以写make_tuple<int,bool>(1,true)
或写make_tuple(1,true)
,编译器会推断它的类型。这种能力是否适用于我编写的代码,还是以某种方式构建到我无法访问的编译器中?
答案 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函数只是一个普通的函数模板。你可以自己做同样的事情。