LeechCraft 0.6.70-16373-g319c272718
Modular cross-platform feature rich live environment.
Loading...
Searching...
No Matches
typegetter.h File Reference
#include <tuple>
+ Include dependency graph for typegetter.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  LC::Util::detail::DecomposeMemberPtr< typename >
 
struct  LC::Util::detail::DecomposeMemberPtr< R(C::*)>
 

Namespaces

namespace  LC
 
namespace  LC::Util
 
namespace  LC::Util::detail
 

Concepts

concept  LC::Util::SomeInvokable
 

Typedefs

template<typename F>
using LC::Util::detail::CallTypeGetter_t = std::decay_t<decltype (*detail::TypeGetter (*static_cast<F*> (nullptr)))>
 
template<SomeInvokable F, size_t Idx>
using LC::Util::ArgType_t = std::tuple_element_t<Idx + 1, detail::CallTypeGetter_t<F>>
 
template<SomeInvokable F>
using LC::Util::RetType_t = std::tuple_element_t<0, detail::CallTypeGetter_t<F>>
 
template<typename PtrType>
using LC::Util::MemberTypeType_t = typename detail::DecomposeMemberPtr<PtrType>::Value_t
 
template<typename PtrType>
using LC::Util::MemberTypeStruct_t = typename detail::DecomposeMemberPtr<PtrType>::StructType_t
 
template<auto Ptr>
using LC::Util::MemberPtrType_t = MemberTypeType_t<decltype (Ptr)>
 
template<auto Ptr>
using LC::Util::MemberPtrStruct_t = MemberTypeStruct_t<decltype (Ptr)>
 

Functions

template<typename R, typename... Args>
std::tuple< R, Args... > * LC::Util::detail::TypeGetter (R(*)(Args...))
 
template<typename F>
auto LC::Util::detail::TypeGetter (F &&f) -> decltype(TypeGetter(+f))
 
template<typename C, typename R, typename... Args>
std::tuple< R, Args... > * LC::Util::detail::TypeGetter (R(C::*)(Args...) const)
 
template<typename C>
decltype(TypeGetter(&C::operator())) LC::Util::detail::TypeGetter (const C &c)
 

Variables

template<SomeInvokable F>
constexpr auto LC::Util::ArgCount_v = std::tuple_size_v<detail::CallTypeGetter_t<F>> - 1