У меня есть функция, определенная следующим образом:
void foo(std::shared_ptr<X> x) { ... };
Если я объявляю общий ptr X
:
std::shared_ptr<X> sourcePtr(new X(...));
Затем я могу вызвать foo
следующим образом:
foo(std::move(sourcePtr));
или
foo(sourcePtr);
Я понимаю, что если я использую первый вариант, то sourcePtr
становится нулевым. Это также предотвращает увеличение счетчика ссылок?
Если это не имеет значения, какой вариант я должен предпочесть? Должен ли я рассматривать что-либо еще при принятии такого решения?