Когда функция принимает shared_ptr
(из boost или С++ 11 STL), вы передаете его:
по ссылке:
void foo(const shared_ptr<T>& p)
или по значению:
void foo(shared_ptr<T> p)
?
Я бы предпочел первый метод, потому что подозреваю, что он будет быстрее. Но стоит ли это того или есть какие-то дополнительные проблемы?
Не могли бы вы привести причины вашего выбора или, если дело, почему вы думаете, что это не имеет значения.