' boost::make_tuple '做拷贝吗?



我的代码中有这样的内容

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)

相关内容

  • 没有找到相关文章

最新更新