у меня есть что-то вроде этого в моем кодеСоздает ли `boost :: make_tuple` копии?
val = boost::make_tuple(objA , objB);
Мой вопрос действительно boost::make_tuple
сделать копии objA и objB?
у меня есть что-то вроде этого в моем кодеСоздает ли `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::make_tuple(&objA,&objB)
.
Да, если вы хотите к нему хранить ссылки, использовать повышение :: исх (или Cref для константных ссылок) ...
boost::make_tuple(boost::cref(objA), boost::cref(objB));