boost::polymorphic_relaxed_get — Retrieves a value of a specified type from a given
variant.Unlike polymorphic_strict_get does not assert at compile time
that type U is one of the types that can be stored in variant.
Функция<polymorphic_get>позволяет проверять время выполнения, типобезопасно извлекать содержимое данного<variant>. Функция удаётся только в том случае, если содержимое относится к указанному типу<U>или типу, полученному из типа<U>, с отказом, указанным как описано ниже.
Предупреждение: После того, как<operand>или его содержание уничтожено (например, когда данному<variant>присваивается значение другого типа), возвращенная ссылка считается недействительной. Таким образом, при обращении с возвращенной ссылкой необходимо проявлять значительную осторожность и осторожность.
Примечания:
В рамках своей гарантии безопасности типа<polymorphic_get>обеспечивает<const>правильность. Таким образом, указанный тип<U>должен быть<const>квалифицирован всякий раз, когда<operand>или его содержание также<const>квалифицировано. Обратное, однако, не требуется: то есть указанный тип<U>может быть<const>— квалифицирован даже тогда, когда<operand>и его содержание нет.
Возвращение:
При прохождении указателя<polymorphic_get>возвращает указатель на значение содержимого, если он относится к указанному типу<U>или типу, полученному из типа<U>; в противном случае возвращается нулевой указатель. При прохождении ссылки<polymorphic_get>возвращается ссылка на содержание значения, если оно относится к указанному типу<U>или типу, полученному из типа<U>; в противном случае выбрасывается исключение (см. ниже).
Броски:
Перегрузки, принимающие указатель<variant>, не будут бросаться; перегрузки, принимающие эталонный бросок<variant><bad_polymorphic_get>, если содержимое не относится к указанному типу<U>или типу, полученному из типа<U>.
Обоснование:
Хотя посещение через<apply_visitor>обычно предпочтительнее из-за его большей безопасности,<polymorphic_get>может быть более удобным в некоторых случаях из-за его простого использования.
Статья Function polymorphic_relaxed_get раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.