`Boost :: make_tuple` делает копии?

У меня есть что-то подобное в моем коде

val = boost::make_tuple(objA , objB);

Мой вопрос boost::make_tuple сделать копии objA и objB?

2

Решение

Да, возвращаемый объект boost::tuple<A, B> который содержит A объект и B объект, поэтому они должны быть скопированы из аргументов.

Если вы хотите кортеж ссылок, используйте boost::tie(objA, objB) вместо этого, который возвращает boost::tuple<A&, B&>,

6

Другие решения

Да, это так. Кортеж содержит переменные по значению, поэтому он должен копировать значения в кортеж. Если вы хотите, чтобы копировались только их ссылки, используйте вместо них указатели, т.е. boost::make_tuple(&objA,&objB),

3

Да, если вы хотите, чтобы он содержал ссылки, используйте boost :: ref (или cref для константных ссылок) …

boost::make_tuple(boost::cref(objA), boost::cref(objB));
3
По вопросам рекламы [email protected]