public struct Tag(string tag_, T = void)
Wraps T with tag_.
Example
import std.variant : Algebraic, visit;
alias Option(T) = Algebraic!(
Tag!("Some", T),
Tag!"None"
);
Option!int option;
option = tag!"Some"(1);
assert(option.visit!(
(Tag!("Some", int) a) => Option!int(tag!"Some"(a + 1)),
(Tag!"None" a) => Option!int(a)
) == tag!"Some"(2));
option = tag!"None"();
assert(option.visit!(
(Tag!("Some", int) a) => Option!int(tag!"Some"(a + 1)),
(Tag!"None" a) => Option!int(a)
) == tag!"None"());
public string tag
tag
public T value
internal value