Как видно на ideone:
cout << string(50, 'x'); // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
cout << string{50, 'x'}; // 2x
WAT??
Я понял, что 50 - это ASCII '2', поэтому:
cout << static_cast<int>('2'); // 50
cout << static_cast<char>(50); // 2
Но что у меня есть.
Это приводит к устойчивому аргументу против инициализаторов С++ 11?