23 General utilities library [utilities]

23.7 Variants [variant]

23.7.7 Visitation [variant.visit]

template <class Visitor, class... Variants> constexpr see below visit(Visitor&& vis, Variants&&... vars);

Requires: Выражение в Effects: элементе должно быть действительным выражением того же типа и категории значения для всех комбинаций альтернативных типов всех вариантов. В противном случае программа имеет неверный формат.

Effects: Пусть is... будет vars.index().... Возвращает . INVOKE(forward<Visitor>(vis), get<is>(forward<Variants>(vars))...);

Remarks: Тип возврата - это общий тип всех возможных INVOKE выражений Effects: элемента.

Throws: bad_­variant_­access если variant в vars это valueless_­by_­exception().

Complexity: Ибо sizeof...(Variants) <= 1вызов вызываемого объекта реализуется в постоянное время, т. Е. Он не зависит от sizeof...(Types). For sizeof...(Variants) > 1, вызов вызываемого объекта не имеет требований к сложности.