typecons: Add option constructor function

This commit is contained in:
Eugen Wissner 2018-09-23 06:58:26 +02:00
parent 03b45ae441
commit 9ac56c50f1

View File

@ -178,6 +178,8 @@ template tuple(Names...)
*
* Params:
* T = Type of the encapsulated value.
*
* See_Also: $(D_PSYMBOL option).
*/
struct Option(T)
{
@ -530,3 +532,30 @@ struct Option(T)
assert(toHash.toHash() == 1U);
}
}
/**
* Creates a new $(D_PSYMBOL Option).
*
* Params:
* T = Option type.
* value = Initial value.
*
* See_Also: $(D_PSYMBOL Option).
*/
Option!T option(T)(auto ref T value)
{
return Option!T(forward!value);
}
/// ditto
Option!T option(T)()
{
return Option!T();
}
///
@nogc nothrow pure @safe unittest
{
assert(option!int().isNothing);
assert(option(5) == 5);
}