Macro Subspace :: sus_choice_types

A macro used to declare the value-type pairings in a Choice. See the Choice type for examples of its use.

Constructs a set of associated value and types pairings. The type of the values need have no relationship to the specified types.


The input takes the format: (Value1, Type1A, Type1B), (Value2, Type2), ... The output is the sequence TypeList<Tuple<Type1A, Type1B>, Tuple<Type2>, ...>, Value1, Value2, .... Use sus::macros::value_types::TypeAt<I, Types<...>> to extract each tuple type from the returned set of types.

The number of values that follow will always be the same as the number of types in the set. This is the primary value of the sus_choice_types() construct.


template <class Types, auto FirstValue, auto... Values>
class Example {
  using first_type = v<0, Types>;
  static constexpr auto first_value = FirstValue;

using E = Example<sus_choice_types(('h', i32), ('w', f32))>;
// `E::first_value` will be `'h'` of type `char`.
// `E::first_type` will be `Tuple<i32>`.