C++17で非推奨だったbool型へのインクリメント演算子、利用不可能に

2017年7月20日 20:04

 C++言語の新標準規格である「C++17」では、bool型に対する++演算子が利用できなくなるそうだ(cpprefjp - C++日本語リファレンス)。今まではbool型の変数に対し++演算子を適用すると、その変数の値をtrueにするという仕様となっていた。

 なお、C言語にはbool型が存在しないため、int型をbool型の代用として使用することが良くあった。この場合、C++の仕様と同様に++演算子を適用するとその値は必ず1以上、つまりtrueになるように見える。しかし、変数の値がint型に格納できる最大値(たとばintが8ビットの場合255)になっていた場合、++演算子を適用するとオーバーフローが発生してその値は0、つまりfalseになってしまうという問題があった。

 cpprefjp - C++日本語リファレンスによると、放射線療法機器「セラック25」ではこのバグが原因で死者を出す事故が発生していたという。

関連記事

最新記事