On Monday, 18 August 2014 at 01:22:00 UTC, Ali Çehreli wrote:
The following solution relies on an alias template parameter and a template constraint. The code covers both Nullable variants:

import std.typecons;

auto nullable(T)(T value)
{
    return Nullable!T(value);
}

unittest
{
    auto x = nullable(42.5);
    assert(is(typeof(x) == Nullable!double));
}

auto nullable(alias nullValue, T)(T value)
    if (is (typeof(nullValue) == T))
{
    return Nullable!(T, nullValue)(value);
}

unittest
{
    auto x = nullable!(int.max)(3);
    assert(is (typeof(x) == Nullable!(int, int.max)));
}

void main()
{}

Ali

Great! Thx.

Reply via email to