Template Constraints

psychoticRabbit meagain at meagain.com
Sat Feb 24 03:42:26 UTC 2018


On Saturday, 24 February 2018 at 03:30:45 UTC, psychoticRabbit 
wrote:
> On Saturday, 24 February 2018 at 02:54:13 UTC, Jonathan wrote:
>> I am having trouble finding many useful explanations of using 
>> template constraints beyond basic usage.
>>
>> I would like to have a template constrant to enforce that a 
>> type can be explicitly cast to another type:
>>
>>     void (T)(T t)
>>             if (cast(int) T)//force `cast(int) T` to be 
>> possible
>>         {
>>             // Yay I know `t` can be cast to an `int`!
>>     }
>>
>> Is this possible?
>
> import std.traits : isIntegral;
> void testTemplate(T)(T x) if (isIntegral!T)
> {
>     writeln(x, " is an integral. yeah!");
>
> }

or this is probably more suitable ;-)

(should you really be using an explicity convert anyway?)

void testTemplate2(T)(T x) if (isImplicitlyConvertible!(T, int))
{
     writeln(x, " is implicitly convertible to an int. yeah!");

}



More information about the Digitalmars-d-learn mailing list