boost::apply_visitor — Allows compile-time checked type-safe application of the
given visitor to the content of the given variant, ensuring that all
types are handled by the visitor.
Перегрузка, взвешивание,< [13] >< [14] >,< [14] >, [два],< [15] >,< [16] >,< [16] >, ,< [14] >,< [14] >, [два] , [два] , [два] , [два] , [два] , [два] , [два] , [два] , [два] , [два] , [два] , [два] , [два] . (Это означает, что мы должны быть готовы к тому, что мы будем иметь дело с ними.)
Перегрузки, принимающие один операнд, вызывают унарную функцию вызова оператора данного посетителя на содержание данного операндаvariant.
Перегрузки, принимающие два операнда, вызывают оператор вызова двоичной функции данного посетителя на содержание данногоvariantоперанда.
Перегрузки, принимающие три или более операндов, вызывают оператор вызова функции данного посетителя на содержание данных операндовvariant. Максимальное количество параметров, контролируемыхBOOST_VARAINT_MAX_MULTIVIZITOR_PARAMSмакро. Эти функции фактически определены в заголовкеboost/variant/multivisitors.hpp(см.раздел под названием “Header”).
Перегрузки, принимающие только посетителя, возвращаютC++03 compatible generic function objectилиC++14 compatible generic function object, которые принимают либо один, два или произвольный подсчет аргументов и вызываютapply_visitorс использованием этих аргументов иvisitor, таким образом, ведя себя как указано выше. (Это поведение особенно полезно, например, когда нужно оперировать каждым элементом последовательности вариантов объектов с помощью стандартного библиотечного алгоритма.)
[ORIG_END] -->
Возвращение:
Перегрузки приемных операндов возвращают результат применения данного посетителя к содержанию данных операндов. Перегрузка, принимающая только посетителя, возвращает объект функции, тем самым задерживая применение посетителя к любым операндам.
Требуется:
Данный посетитель должен выполнить требования концепцииStaticVisitorв отношении каждого из ограниченных типов данного<variant>.
Броски:
Перегрузки принимающие операнды бросают только в том случае, если данный посетитель бросает при применении. Перегрузка, принимающая только посетителя, не бросит. (Заметьте, однако, что возвращаемыйфункциональный объектможет бросать при вызове.)
Статья Function apply_visitor раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.