template <typename T> struct A {
A(T);
A(const A&);
};
int main()
{
A x(42); // #1
A y = x; // #2
}
Насколько я понимаю, T
для # 1 будет выводиться с использованием руководства по неявному выводу, сгенерированного с первого ctor. Тогда x
будет инициализирован с использованием этого ctor.
Для # 2, однако, T
будет выведено с использованием кандидата на вывод копии (который, как я понимаю, является конкретным случаем руководства по вычитанию) (а затем y
будет инициализирован с использованием второго ctor).
Почему не удалось вывести T
для # 2 с помощью (неявного) руководства по вычитанию, созданного с помощью copy-ctor?
Думаю, я просто не понимаю общую цель кандидата на вычеты.