Можно ли запретить неявное преобразование базовых типов в C++? В частности, я хотел бы запретить неявное преобразование из unsigned
в float
или double
из-за ошибок, подобные этим:Запрет неявного преобразования `unsigned` в` double`
int i = -5;
...
unsigned u = i; // The dawn of the trouble.
...
double d = u; // The epicenter of the bug that took a day to fix.
Я пытался что-то вроде этого:
explicit operator double(unsigned);
К сожалению, это не сработало :
explicit.cpp:1: error: only declarations of constructors can be ‘explicit’
explicit.cpp:1: error: ‘operator double(unsigned int)’ must be a nonstatic member function