Templates - ntrel/Volta GitHub Wiki

Template Parameters

template TP!(TemplateParameters) {...} // general form
template TP!T {...}      // can omit brackets for one type argument
func f!(T value)(T v2); // `!` helps make it clear `f` is a template function

Template Alias Parameters

A template alias parameter can take any type or value, including built-in types:

template TP!(alias A) {...}
int v;

TP!int, TP!Object, TP!5, TP!v are all acceptable instantiations.

Template Variadic Parameters

Passing multiple types:

template TP!(Ts...) {...}

TP!5 is not a legal instantiation as 5 is not a type. To pass non-types as well, use a variadic alias parameter:

template TP!(alias As...) {...}

Can be instantiated with TP!(5, int).