Provides a forward declaration of the boost::variant and boost::recursive_variant class templates and the boost::recursive_variant_ tag type. Also defines several preprocessor symbols. Expands to the length of the template parameter list for variant. Note: Conforming implementations of variant must allow at least ten bounded types. That is, BOOST_VARIANT_LIMIT_TYPES >= 10 must be true. Enumerate parameters for use with boost::variant. Expands to a comma-separated sequence of length BOOST_VARIANT_LIMIT_TYPES, where each element in the sequence consists of the concatenation of param with its zero-based index into the sequence. That is, param ## 0, param ## 1, ..., param ## BOOST_VARIANT_LIMIT_TYPES - 1. Rationale: This macro greatly simplifies for the user the process of declaring variant types in function templates or explicit partial specializations of class templates, as shown in the tutorial section. Enumerate all but the first parameter for use with boost::variant. 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. Indicates absence of type sequence support in boost::variant. Defined only if the boost::variant< type-sequence > syntax is not supported for some reason on the current platform or compiler.