taggedalgebraic.taggedunion

* Generic tagged union and algebraic data type implementations. * * Copyright: Copyright 2015-2019, Sönke Ludwig. * License: Boost License 1.0. * Authors: Sönke Ludwig

Members

Aliases

TypeEnum
deprecated alias TypeEnum(U) = UnionFieldEnum!U
Undocumented in source.
UnionKindNames
alias UnionKindNames(FieldEnum) = AliasSeq!(__traits(allMembers, FieldEnum))
Undocumented in source.
UnionKindTypes
alias UnionKindTypes(FieldEnum) = staticMap!(TypeOf, EnumMembers!FieldEnum)
Undocumented in source.
visit
alias visit = taggedalgebraic.visit.visit
Undocumented in source.

Enums

isUnitType
eponymoustemplate isUnitType(T)
Undocumented in source.

Functions

rawEmplace
void rawEmplace(void[] dst, T src)
Undocumented in source. Be warned that the author may not have intended to support it.
rawSwap
void rawSwap(T a, T b)
Undocumented in source. Be warned that the author may not have intended to support it.

Properties

forceNothrowPostblit
auto forceNothrowPostblit [@property getter]
Undocumented in source. Be warned that the author may not have intended to support it.

Structs

This
struct This

Special type used as a placeholder for U within the definition of U to enable self-referential types.

Void
struct Void

Convenience type that can be used for union fields that have no value (void is not allowed).

Templates

AmbiguousTypes
template AmbiguousTypes(Types...)
Undocumented in source.
TaggedUnion
template TaggedUnion(U)

Implements a generic tagged union type.

TypeOf
template TypeOf(alias kind)

Maps a kind enumeration value to the corresponding field type.

UnionFieldEnum
template UnionFieldEnum(U)
Undocumented in source.
UniqueTypes
template UniqueTypes(Types...)
Undocumented in source.

Meta