У меня есть что-то подобное в моем коде
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 для константных ссылок) …
boost::make_tuple(boost::cref(objA), boost::cref(objB));