2

我的代码中有这样的东西

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

我的问题是boost::make_tuple复制 objA 和 objB 吗?

4

3 回答 3

6

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

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

于 2014-07-10T16:02:20.720 回答
3

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

于 2014-07-10T16:01:52.877 回答
3

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

boost::make_tuple(boost::cref(objA), boost::cref(objB));
于 2014-07-10T16:08:08.457 回答