[Semi-OT] to!string(enumType)

Dominikus Dittes Scherkl via Digitalmars-d digitalmars-d at puremagic.com
Fri May 19 13:23:16 PDT 2017


On Friday, 19 May 2017 at 17:47:42 UTC, Stefan Koch wrote:
> On Friday, 19 May 2017 at 17:34:28 UTC, Dominikus Dittes 
> Scherkl wrote:
>> On Friday, 19 May 2017 at 00:14:05 UTC, Stefan Koch wrote:
>>
>>> string enumToString(E)(E v)
>>> {
>>>     static assert(is(E == enum),
>>>         "emumToString is only meant for enums");
>>
>> Why that assert? We can check it at compiletime. Doesn't this 
>> cry for a constraint? I would use asserts only ever for stuff 
>> that's only known at runtime.
>>
>> string enumToString(E)(E v) if(is(E == enum))
>> {
>>    ...
>> }
>
> the static assert tells what's going on.
> It it does result in a simple overload not found.

Hm. Maybe in this case it's ok, because enum is pretty much all 
that can be expected as argument to "enumToString". But normally 
I would calling not using a constraint "stealing overload 
possibilities", because it would not be possible to overload the 
same function for a different type if you use this kind of assert.
And the error message is not really better.



More information about the Digitalmars-d mailing list