`boost :: make_tuple`会复制吗?

时间:2014-07-10 15:59:25

标签: c++ boost-tuples

我的代码中有这样的东西

val = boost::make_tuple(objA , objB);

我的问题是boost::make_tuple是否制作了objA和objB的副本?

3 个答案:

答案 0 :(得分:6)

是的,返回的对象是boost::tuple<A, B>,其中包含A对象和B对象,因此必须从参数中复制它们。

如果您想要一个引用元组,请改用boost::tie(objA, objB),它会返回boost::tuple<A&, B&>

答案 1 :(得分:3)

是的。元组按值保存变量,因此必须将值复制到元组中。如果只想复制它们的引用,请改用指针,即boost::make_tuple(&objA,&objB)

答案 2 :(得分:3)

是的,如果你想保留引用,请使用boost :: ref(或const引用的cref)......

boost::make_tuple(boost::cref(objA), boost::cref(objB));