#include <atria/variant/variant_types.hpp>
#include <atria/meta/common_type.hpp>
#include <atria/meta/utils.hpp>
#include <atria/estd/type_traits.hpp>
#include <ableton/build_system/Warnings.hpp>
#include <boost/mpl/push_back.hpp>
#include <cassert>
#include <utility>
Go to the source code of this file.
|
| | atria |
| | C++ amazing templates and reusable implementations awesomeness.
|
| |
| | atria::variant |
| | Tools for better usability of boost::variant, eggs::variant and potentially other implementations of sum types.
|
| |
|
|
template<typename FnT , typename... VariantTs> |
| using | visitor_result_of_t = typename visitor_result_of< FnT, VariantTs... >::type |
| |
|
|
template<typename ReturnType = void, typename Fn = detail::default_construct<ReturnType>> |
| otherwise_t< Fn, ReturnType > | otherwise (Fn &&fn=Fn()) |
| |
| template<typename... Args, typename Fn > |
| when_t< Fn, typename boost::mpl::if_< std::is_reference< Args >, Args, const Args & >::type... > | when (Fn &&fn) |
| | Factory for when functors. More...
|
| |
| template<typename... FnTs> |
| auto | visitor (FnTs &&...fns) -> visitor_t< meta::common_type_t< typename std::result_of< FnTs(meta::bottom)>::type... >, FnTs... > |
| | Returns a visitor object that can be used to deconstruct various variant types, created by composing the functions fns.... More...
|
| |
|
template<typename FnT > |
| auto | visitor (FnT &&fn) -> FnT && |
| |
| template<typename VariantT , typename... FnTs> |
| auto | visitor_for (FnTs &&...fns) -> visitor_t< visitor_result_of_t< detail::visitor_impl< FnTs... >, variant_types_t< VariantT > >, FnTs... > |
| | Like visitor, but it uses the variant_types in VariantT to deduce what the return type of the visitor should be. More...
|
| |
|
template<typename VarianT , typename FnT > |
| auto | visitor_for (FnT &&fn) -> FnT && |
| |