Необходимо вызвать конструктор копирования, потому что этот код должен сделать копию: функция method()
возвращает ссылку на некоторый объект, копия которого должна храниться в переменной test
.
Поскольку вы возвращаете ссылку, а не объект, оптимизация возвращаемого значения не требуется.
Если вы не хотите делать копию списка, вы можете сделать test
ссылку:
list<someClass>& test = method();
Однако test
будет ссылаться на исходный список, поэтому любые изменения, сделанные в test
, будут также вноситься в исходный список, и всякий раз, когда исходный список уничтожается, test
становится недействительным (что означает Вы должны быть более осторожны с временем жизни объекта).