我的代码中有这样的内容
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::ref(或cref用于const引用)…
boost::make_tuple(boost::cref(objA), boost::cref(objB));
是的。元组按值保存变量,因此它必须将值复制到元组中。如果您只想复制它们的引用,请使用指针代替,即boost::make_tuple(&objA,&objB)
。