[Development] Compiler warnings
Mathias Hasselmann
mathias at taschenorakel.de
Fri Oct 17 19:26:56 CEST 2014
Am 17.10.2014 um 18:31 schrieb Thiago Macieira:
> On Friday 17 October 2014 13:06:39 Milian Wolff wrote:
>> enum Foo {
>> Bar = 1, Baz = 2
>> };
>>
>> Foo foo = static_cast<Foo>(3);
>>
>> Now what do you do without a default clause?
>
> Shoot the developer who abused the API.
>
> If the function accepts enum values 1 and 2 and you pass a 3, you deserve the
> undefined behaviour.
>
> That is the same as passing a bool that doesn't contain exactly values 0 or 1
> or passing an uninitialised pointer.
>
> We have to handle all regular conditions. We don't have to guard against
> stupidity.
>
I don't think this example has to do with stupidity. To me this just
seems like a minimal example of typical integration problems that happen
in real world. Far fetching I'd talk about distributed services, reading
files written by a different program version, and such. Also Qt already
deals with such issues where it is obvious:
const char * QVariant::typeToName(int typeId) [static]
Converts the int representation of the storage type, typeId, to its
string representation.
Returns a null pointer if the type is QVariant::Invalid(obsolete)
or doesn't exist.
More information about the Development
mailing list