Я не знаю, что рассматривал SC, но имейте в виду, что единообразная инициализация на самом деле не «работает» в общих контекстах (построение значений запрета *).Рассмотрим эту попытку:
template<typename T, typename... Args>
T
make(Args&&... args)
{
return T { std::forward<Args>(args)... };
}
Вы получаете:
assert( make<std::vector<int>>(10, 0).size() == 2 );
assert( std::vector<int>(10, 0).size() == 10 );
, и это не компилируется:
make<std::vector<int*>>(10u, 0);
, тогда как это:
std::vector<int*>(10u, 0);
Если конкретное взаимодействие между совершенной пересылкой и списками инициализаторов, которое вызывает это, было формализовано достаточно скоро, я мог видеть, что SC не хочет перезапускаться с нуля.
(*): T {}
хорошо даже вобщие контексты.