template <typename ...Ts>
struct ListT {};
ListT<Ts...>
represents a list of types.
template <auto ...As>
struct ListA {};
ListT<As...>
represents a list of values.
NOTE
ListA
is only enabled for C++17+(more precisely, for those versions defining the __cpp_nontype_template_parameter_auto
macro).