Tag

Wraps **T** with **tag_**.

Constructors

this
this(T value)
Undocumented in source.

Alias This

value

Members

Variables

tag
enum string tag;

tag

value
T value;

internal value

Examples

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

Meta