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!");

}

Reply via email to