#include<string> #include<iostream> int main() { std::string st{1U, '0'}; std::cout << st.length() << '\n'; std::cout << st << '\n'; } Prints: 2 ☺0 Must be: 1 0
If replace with: std::string st(1U, '0'); then prints as expected: 1 0 Why {1U, '0'} is treated as std::initializer_list<char> ?
Because the standard says so