std::make_tuple
?我知道在某些情况下,该函数可以减少您需要键入的字符数,因为您可以避免使用模板参数。但这是唯一的原因吗?是什么使得 std::tuple
特殊,以至于存在此函数,而其他类模板没有这样的函数?这只是因为您可能更经常地在这种情况下使用 std::tuple
吗?
以下是两个示例,其中std::make_tuple
减少了字符数量:
// Avoiding template parameters in definition of variable.
// Consider that template parameters can be very long sometimes.
std::tuple<int, double> t(0, 0.0); // without std::make_tuple
auto t = std::make_tuple(0, 0.0); // with std::make_tuple
// Avoiding template parameters at construction.
f(std::tuple<int, double>(0, 0.0)); // without std::make_tuple
f(std::make_tuple(0, 0.0)); // with std::make_tuple
但是就像上面所说的,对于许多其他类模板,您并没有这样的功能。
std::make_pair
。我认为一个经验法则可能是,如果你想要构造这些对象只是作为另一个表达式的一部分、调用函数等,则它们存在。 - BoBTFishmake_*
函数呢? 目前我们已经有了 make_shared,make_unique 等等。 - Marc Glissemake_tuple([&](){ f(x); }, std::mem_fn(&X::foo))
。 - Kerrek SBmake_tuple
属于make_tuple
、tie
和forward_as_tuple
这个系列,它们分别返回 prvalue、lvalue 和转发值。 - Kerrek SB