История изменений
Исправление Begemoth, (текущая версия) :
Извиняюсь, похоже я не учёл одну деталь: при copy initialization (это в частности передача аргументов и возврат значений) необязательно вызывается конструктор копирования, а выполняется полноценное разрешение перегрузки и тут шаблонный конструктор может иметь сигнатуру которая лучше подходит списку аргументов.
Исправление Begemoth, :
Извиняюсь, похоже я не учёл одну деталь: при copy initialization (это в частности передача аргументов и возврат значений) необязательно вызывается конструктор копирования, а выполняется полноценное разрешение перегрузки и тут шаблонный конструктор может иметь сигнатуру которая лучше подходит списку аргументов.
И получается такой интересный эффект, если сделать A(const A&) = delete; то std::is_copy_constructible<A>::value == false. Но copy initialization будет работать для неконстантных ссылок на A.
Исходная версия Begemoth, :
Извиняюсь, похоже я не учёл одну деталь: при copy initialization (это в частности передача аргументов и возврат значений) необязательно вызывается конструктор копирования, а выполняется полноценное разрешение перегрузки и тут шаблонный конструктор может иметь сигнатуру которая лучше подходит списку аргументов.