std::string(count, ch) 使用统一初始化时未调用
std::string(count, ch) not called when using uniform initialization
我刚刚被这个看似无辜的尝试所抓住,它使用统一的初始化语法调用需要大小和字符值的 std::string
constructor:
std::string s{ 10, '[=11=]' };
我认为这会创建一个长度为 10 的字符串,用 [=13=]
初始化。
虽然它实际上调用了构造函数,该构造函数采用 初始化列表 并因此创建了一个 长度为 2 的字符串,并用 {'\n', '[ =14=]'}
!
有没有办法在使用统一初始化时避免这个陷阱?还是我必须要小心?
注意: 之前已经有人问过,但是没有给出如何避免这个陷阱的答案。
我刚刚被这个看似无辜的尝试所抓住,它使用统一的初始化语法调用需要大小和字符值的 std::string
constructor:
std::string s{ 10, '[=11=]' };
我认为这会创建一个长度为 10 的字符串,用 [=13=]
初始化。
虽然它实际上调用了构造函数,该构造函数采用 初始化列表 并因此创建了一个 长度为 2 的字符串,并用 {'\n', '[ =14=]'}
!
有没有办法在使用统一初始化时避免这个陷阱?还是我必须要小心?
注意: