Function polymorphic_get
boost::polymorphic_get — Retrieves a value of a specified type from a given
          variant.
 
Synopsis
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);
Description
Оценивать до polymorphic_strict_get, если BOOST_VARIANT_USE_RELAXED_GET_BY_DEFAULT не определено. Если определен BOOST_VARIANT_USE_RELAXED_GET_BY_DEFAULT, то оценивается значение polymorphic_relaxed_get.
Рекомендация: Используйте polymorphic_get в новом коде без определения BOOST_VARIANT_USE_RELAXED_GET_BY_DEFAULT. Таким образом, polymorphic_get обеспечивает больше проверок времени компиляции и его поведение ближе к std::get с C++. Стандартная библиотека.