или лучше как-то иначе сделать? Я просто не очень понимаю, что с поинтерами внутри вектора происходить будет.
Не нужно мувать, достаточно return vec;
А, действительно, я на другом примере проверял просто… Спасибо
NRVO не будет работать в такой ситуации, поэтому лучше просто return
Ненормально. Возврат из функции и так всегда r-value, его не нужно move. move нужен, чтобы показать, что указываемый l-value тебе более не нужен как объект, и его можно разрушить изнутри, и превращает ссылку на l-value в ссылку на r-value
А если потом надо этот вектор сохранить как результат? Конструктор копирования вызывается, и ничего не получается(
что конкретно не получается, пример кода есть?
К сожалению, его проблемно переносить будет. Чуть позже накидаю.
Что-то типа такого, если вкратце std::vector<std::unique_ptr<MyClass>> foo(); auto v = foo();
тут нет проблем, даже если nrvo не будет, то будет мув и всё ок
А, у меня в аргументе функции копирование)) Спасибо!
Обсуждают сегодня