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