Стандарт позволяет любой уровень пропуска копии здесь:
В стандарте говорится, что конструктор копии не должен использоваться - посмотрите раздел 12.8/15:
15 Каждый раз, когда временный объект класса копируется с помощью конструктора копии, и этого объекта и копии, имеют тот же дисквалифицированный условной ценой тип, реализации разрешают рассматривать оригинал и копию как два различных способа относиться к тому же объекту и не выполнить копию вообще, даже если у конструктора копии класса или деструктора есть побочные эффекты.
И намного больше в том же духе.
Путь не передает параметр ссылкой и присваивает результат ему?
Существует один очень простой и хороший способ избежать таких соображений полностью - можно рассмотреть возврат повышения:: shared_ptr к созданному объекту - это будет практически то же когда дело доходит до удобства использования, но Ваш объект не будет, конечно, скопирован излишне - и это будет верно также при возврате его хотя пара слоев вызовов функции.