...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::polymorphic_get — Retrieves a value of a specified type from a given
variant
.
// In header: <boost/variant/polymorphic_get.hpp> template<typename U, typename T1, typename T2, ..., typename TN> U * polymorphic_get(variant<T1, T2, ..., TN> * operand); template<typename U, typename T1, typename T2, ..., typename TN> const U * polymorphic_get(const variant<T1, T2, ..., TN> * operand); template<typename U, typename T1, typename T2, ..., typename TN> U & polymorphic_get(variant<T1, T2, ..., TN> & operand); template<typename U, typename T1, typename T2, ..., typename TN> const U & polymorphic_get(const variant<T1, T2, ..., TN> & operand);
Evaluates to polymorphic_strict_get
if BOOST_VARIANT_USE_RELAXED_GET_BY_DEFAULT
is not defined. If BOOST_VARIANT_USE_RELAXED_GET_BY_DEFAULT
is defined then evaluates to polymorphic_relaxed_get
.
Recomendation: Use
polymorphic_get
in new code without defining
BOOST_VARIANT_USE_RELAXED_GET_BY_DEFAULT
. In that way
polymorphic_get
provides more compile time checks and it's behavior is closer to std::get
from C++ Standard Library.