LeechCraft  0.6.70-10870-g558588d6ec
Modular cross-platform feature rich live environment.
visitor.h File Reference
#include <boost/variant.hpp>
#include "void.h"
#include "util.h"
#include "typelist.h"
#include "typelevel.h"
#include "detector.h"
+ Include dependency graph for visitor.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  LeechCraft::Util::detail::VisitorBase< Bases >
 
struct  LeechCraft::Util::detail::Visitor< R, Args >
 
struct  LeechCraft::Util::detail::VisitorFinallyTag
 
class  LeechCraft::Util::Visitor< FinallyFunc, Args >
 

Namespaces

 LeechCraft
 
 LeechCraft::Util
 
 LeechCraft::Util::detail
 

Typedefs

template<typename R , typename... Args>
using LeechCraft::Util::detail::FixCommonType_t = decltype(FixCommonType< R, Args... >())
 

Functions

template<typename T >
constexpr T LeechCraft::Util::detail::Declval ()
 
template<typename R , typename... Args>
decltype(auto) constexpr LeechCraft::Util::detail::FixCommonType ()
 
template<typename... Vars, typename... Args, typename Common = std::common_type_t<std::result_of_t<detail::VisitorBase<Args...> (Vars&)>...>, typename Res = FixCommonType_t<Common, std::result_of_t<detail::VisitorBase<Args...> (Vars&)>...>>
constexpr Res LeechCraft::Util::detail::DetectCommonType (Typelist< Vars... >, Typelist< Args... >)
 
template<typename... Vars, typename... Args>
decltype(auto) LeechCraft::Util::Visit (const boost::variant< Vars... > &v, Args &&... args)
 
template<typename... Vars, typename... Args>
decltype(auto) LeechCraft::Util::Visit (boost::variant< Vars... > &v, Args &&... args)
 
template<typename... Args>
 LeechCraft::Util::Visitor (Args &&...) -> Visitor< Void, Args... >
 
template<typename T , typename... Args>
auto LeechCraft::Util::InvokeOn (T &&t, Args &&... args)
 

Variables

template<typename... Args>
constexpr bool LeechCraft::Util::detail::AllLValueRefs = AllOf<std::is_lvalue_reference, Args...>
 
template<typename... Args>
constexpr bool LeechCraft::Util::detail::AllRValueRefs = AllOf<std::is_rvalue_reference, Args...>
 
template<typename... Args>
constexpr bool LeechCraft::Util::detail::AllConsts = AllOf<std::is_const, Args...>
 
template<typename... Args>
constexpr bool LeechCraft::Util::detail::AllConstsWithoutRefs = AllOf<std::is_const, std::remove_reference_t<Args>...>