我的代码中有这样的东西
val = boost::make_tuple(objA , objB);
我的问题是boost::make_tuple
复制 objA 和 objB 吗?
我的代码中有这样的东西
val = boost::make_tuple(objA , objB);
我的问题是boost::make_tuple
复制 objA 和 objB 吗?
是的,返回的对象是一个boost::tuple<A, B>
包含一个A
对象和一个对象的B
对象,因此必须从参数中复制它们。
如果你想要一个引用元组,请boost::tie(objA, objB)
改用它,它返回一个boost::tuple<A&, B&>
.
是的,它确实。元组按值保存变量,因此它必须将值复制到元组中。如果您只想复制它们的引用,请改用指针,即boost::make_tuple(&objA,&objB)
.
是的,如果你想保存引用,请使用 boost::ref (或 cref 用于 const 引用)...
boost::make_tuple(boost::cref(objA), boost::cref(objB));