如何确保类型安全的字符串初始化?

How do I ensure type-safe string initialization?

提问人:Spongman 提问时间:1/19/2023 最后编辑:DailyLearnerSpongman 更新时间:1/20/2023 访问量:122

问:

我如何使此代码无法编译?

std::string foo;
foo = 3;

我知道它可以转换为(恕我直言,谢谢,C),并且有一个赋值运算符(也是一个错误恕我直言)。intcharstd::stringchar

C++ 字符串 类型转换 C++-标准库

评论

3赞 Artyer 1/19/2023
clang.llvm.org/extra/clang-tidy/checks/bugprone/......(另请参阅:stackoverflow.com/q/7918198)
3赞 NathanOliver 1/19/2023
没有合法的方法可以阻止它编译,因为可以隐式转换为任何字符类型。3
1赞 Dave S 1/19/2023
我想知道是否有 Microsoft 等价物?我在上面的链接中没有看到它g++ -Wconversion
2赞 Drew Dormann 1/19/2023
如果你采纳 Ted 的建议,你可以实现而不是 .basic_crippled_string& operator=(std::same_as<char> auto)basic_crippled_string& operator=(char)
2赞 Ted Lyngmo 1/19/2023
Fwiw:我很少看到它被使用,我宁愿他们弃用它,或者至少让它像@DrewDormann建议的那样。operator=

答: 暂无答案