Я не был вовлечен в решение, однако, я вижу некоторые проблемы в его принятии. Давайте предположим следующий код:
template<class T = int>
struct X
{
X(T t = T{}) {}
};
Это делает вашу переменную все еще в порядке:
int main()
{
Y myY;
}
Однако, что если Y имеет конструктор, который реализован в отдельном файле?
struct Y
{
Y();
X myX{'a'};
};
Y::Y() : myX{0.0} {}
Можем ли мы в этом случае myX
быть X<int>
или X<double>
или X<char>
?
Я вижу, что в этом может быть путаница. Поскольку комитет по стандартам не может отменить свои решения, лучше сделать небольшой шаг, который наверняка, и посмотреть, нужно ли это людям и что они ожидают.