vibe.d beta banner
get vibe.d
0.10.1

Asynchronous I/O that doesn’t get in your way, written in D

Template visit

Dispatches the value contained on a TaggedUnion or TaggedAlgebraic to a set of visitors.

template visit(VISITORS...) ;

A visitor can have one of three forms:

  • function or delegate taking a single typed parameter
  • function or delegate taking no parameters
  • function or delegate template taking any single parameter

....

Contained Functions

NameDescription
visit
visit

Example

static if (__VERSION__ >= 2081) {
	import std.conv : to;

	union U {
		int number;
		string text;
	}
	alias TU = TaggedUnion!U;

	auto tu = TU.number(42);
	tu.visit!(
		(int n) { assert(n == 42); },
		(string s) { assert(false); }
	);

	assert(tu.visit!((v) => to!int(v)) == 42);

	tu.setText("43");

	assert(tu.visit!((v) => to!int(v)) == 43);
}
Authors
Copyright
License