いくつかの C++ コードの大幅なリファクタリングを行ったところ、私が気付いていない暗黙的な変換に起因する多数のバグが発見されました。
例
struct A *a();
bool b() {
return a();
}
void c() {
int64_t const d(b());
}
問題
- では
b
、 の戻り値の型a
は暗黙のうちに にキャストされbool
ます。 - では
c
、 から返された値b
はサイレントに に昇格されint64_t
ます。
質問
プリミティブ型間の暗黙的な変換に関する警告またはエラーを受け取るにはどうすればよいですか?
ノート
- の使用は
-Wconversion
、上記の例とは関係のないいくつかの任意の変換のみをピックアップするようです。 BOOST_STRONG_TYPEDEF
はオプションではありません (ディスク構造で使用されるため、私のタイプは POD である必要があります)。- C も重要ですが、この問題は C++ コード ベースに関連しています。