0

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

4

4 回答 4

1

这是一个例子:

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

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

于 2012-07-01T18:41:49.170 回答
1

模板参数推导(此名称的专有名称)是所有函数模板的标准规定的。应遵循的过程在 C++11 第 14.8.2 节中进行了说明。

于 2012-07-01T16:42:20.007 回答
0

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

于 2012-07-01T16:44:09.780 回答
0

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

于 2012-07-01T16:44:13.760 回答