【发布时间】:2020-12-30 21:13:11
【问题描述】:
我注意到在 C++ 中 bool 被隐式转换为 char。我意识到它们都存储为 1 个字节,但它们是根本不同的类型。是否有一些编译器标志或我可以设置的东西来防止两者之间的隐式转换? char 被自动转换为 bool 是有道理的,但反之则不然。
例如,以下是有效的:
char test = true;
我正在使用带有 C++17 的 Xcode
【问题讨论】:
-
"char 被自动转换为 bool 是有意义的,但反过来就不行。" 你确定吗?好像和我相反。每个
bool都适合char,但反之则不然。 -
你用什么编译?
-
@TedLyngmo 抱歉错过了阅读您的评论并没有意识到您引用了 OP。
-
char test = strict<char>(true);将无法编译。只需要制作strict模板类,它不允许任何非该类型的东西。 -
我认为最好的答案是:接受它。这是 C++ 很久以前做出的选择。这不是很好,但与它对抗更糟糕。
标签: c++ char boolean implicit-conversion