The following

unittest
{
    import std.datetime.date : Date;
    Date date;
    import core.internal.hash : hashOf;
    auto hash = date.hashOf;
}

errors (with DMD v2.081.0-beta.1) as

/usr/include/dmd/druntime/import/core/internal/convert.d(619,101): Error: 
template `core.internal.convert.toUbyte` cannot deduce function from argument 
types `!()(Month)`, candidates are:
/usr/include/dmd/druntime/import/core/internal/convert.d(14,16): `core.internal.convert.toUbyte(T)(ref T val) if (is(Unqual!T == float) || is(Unqual!T == double) || is(Unqual!T == real) || is(Unqual!T == ifloat) || is(Unqual!T == idouble) || is(Unqual!T == ireal))` /usr/include/dmd/druntime/import/core/internal/convert.d(479,16): `core.internal.convert.toUbyte(T)(T[] arr) if (T.sizeof == 1)` /usr/include/dmd/druntime/import/core/internal/convert.d(485,16): `core.internal.convert.toUbyte(T)(T[] arr) if (is(typeof(toUbyte(arr[0])) == const(ubyte)[]) && (T.sizeof > 1))` /usr/include/dmd/druntime/import/core/internal/convert.d(503,16): `core.internal.convert.toUbyte(T)(ref T val) if (__traits(isIntegral, T) && !is(T == enum))` /usr/include/dmd/druntime/import/core/internal/convert.d(537,16): `core.internal.convert.toUbyte(T)(ref T val) if (is(Unqual!T == cfloat) || is(Unqual!T == cdouble) || is(Unqual!T == creal))`
/usr/include/dmd/druntime/import/core/internal/convert.d(619,101):        ... 
(2 more, -v to show) ...
/usr/include/dmd/druntime/import/core/internal/hash.d(145,37): Error: template instance `core.internal.convert.toUbyte!(Date)` error instantiating
foo.d(6,21):        instantiated from here: `hashOf!(Date)`

but not with 2.080.1. A regression?

Reply via email to