Template Struct SchemaImpl::VisitorWrapper¶
Defined in File SchemaImpl.h
Nested Relationships¶
This struct is a nested type of Class SchemaImpl.
Struct Documentation¶
-
template<typename
F
>
structVisitorWrapper
: public boost::static_visitor<> A functor-wrapper used in the implementation of Schema::forEach.
Visitor functors used with Boost.Variant (see the Boost.Variant docs) must inherit from boost::static_visitor<> to declare their return type (void, in this case). By wrapping user-supplied functors with this class, we can hide the fact that we’ve implemented SchemaImpl using Boost.Variant (because they won’t need to inherit from static_visitor themselves.
Public Functions
-
template<typename
T
>
voidoperator()
(SchemaItem<T> const &x) const Call the wrapped function.
-
void
operator()
(ItemVariant const &v) const Invoke the visitation.
The call to boost::apply_visitor will call the appropriate template of operator().
This overload allows a VisitorWrapper to be applied directly on a variant object with function-call syntax, allowing us to use it on our vector of variants with std::for_each and other STL algorithms.
-
template<typename
T
>VisitorWrapper
(T &&func) Construct the wrapper.
-
template<typename