...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
BOOST_VARIANT_ENUM_SHIFTED_PARAMS — Enumerate all but the first parameter for use with
variant
.
// In header: <boost/variant/variant_fwd.hpp>
BOOST_VARIANT_ENUM_SHIFTED_PARAMS(param)
When variadic templates are available and
BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES
is not defined, expands to variadic template list in the following manner:
BOOST_VARIANT_ENUM_SHIFTED_PARAMS(T) => TN...
BOOST_VARIANT_ENUM_SHIFTED_PARAMS(class T) => class... TN
BOOST_VARIANT_ENUM_SHIFTED_PARAMS(class Something) => class... SomethingN
BOOST_VARIANT_ENUM_SHIFTED_PARAMS(typename Something) => typename... SomethingN
BOOST_VARIANT_ENUM_SHIFTED_PARAMS(Something) => SomethingN...
BOOST_VARIANT_ENUM_SHIFTED_PARAMS(Something) => SomethingN...
Otherwise expands to a comma-separated sequence of length
BOOST_VARIANT_LIMIT_TYPES - 1
,
where each element in the sequence consists of the concatenation of
param with its one-based index into the sequence.
That is,
param ## 1, ..., param ## BOOST_VARIANT_LIMIT_TYPES - 1
.
Note: This macro results in the
same expansion as
BOOST_VARIANT_ENUM_PARAMS
-- but
without the first term.