Невозможно вызвать второй конструктор (тот, который принимает Inner
). Так как параметр шаблона T2
отображается в не выводимом контексте, слева от оператора разрешения области, который называет зависимый тип, он должен быть указан явно.
Но аргументы шаблона шаблонного конструктора не могут быть предоставлены явно ! Они должны быть выведены.
Как таковая, замена всегда не выполняется для второго c'or. Только первый c'tor делает это, чтобы перегрузить разрешение. И это разрешение перегрузки видит, что вы пытаетесь связать объект Class2<int>::Inner
с const Class2<int>&
. Эта ссылка просто не может связать.