Я немного переработал код С++ и обнаружил многочисленные ошибки, возникающие из неявных преобразований, о которых я не знаю.
Пример
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 также представляет интерес, однако эта проблема относится к базе кода С++.