mtputils.hpp

template<typename Base, typename ...Ts>
struct all_derive_from : public std::bool_constant<(true && ... && std::is_base_of_v<Base, Ts>)>
template<typename ...Ts>
struct all_unique : public std::bool_constant<(true && ... && impl::unique_in<Ts, Ts...>)>
template<typename T>
struct gviz::mtp::always

Public Functions

template<typename U>
inline constexpr T operator()(U&&) const

Public Members

T value
template<typename T, T value>
struct gviz::mtp::always_ct

Public Functions

template<typename U>
inline constexpr T operator()(U&&) const noexcept
template<typename T, std::size_t StartI, std::size_t EndI, std::size_t StepI = 1>
struct gviz::mtp::array_atoi_ct

Public Functions

inline constexpr array_atoi_ct()

Public Members

T array[size]

Public Static Attributes

static constexpr std::size_t size = (EndI - StartI) / StepI
template<typename ...Ts>
struct gviz::mtp::Expandable

Public Types

template<template<typename...> typename Consumer, typename ...Us>
using expand_for_t = Consumer<Ts..., Us...>
template<template<typename...> typename Consumer, typename ...Us>
using rexpand_for_t = Consumer<Us..., Ts...>
template<typename X, typename ...Ts>
struct gviz::mtp::find_type_index_in

Public Static Attributes

static constexpr std::size_t value = impl::find_type_index_in_impl<1, X, Ts...>::value
template<std::size_t I, typename X, typename ...Ts>
struct gviz::mtp::impl::find_type_index_in_impl

Public Static Attributes

static constexpr std::size_t value = 0
template<std::size_t I, typename X, typename T, typename ...Ts>
struct gviz::mtp::impl::find_type_index_in_impl<I, X, T, Ts...>

Public Static Attributes

static constexpr std::size_t value  =std::is_same_v<X, T>? I:find_type_index_in_impl<I, X, Ts...>::value
template<typename X, typename ...Ts>
struct has_type_in : public std::bool_constant<(true && ... && std::is_same_v<X, Ts>)>
struct gviz::mtp::identity

Public Functions

template<typename T>
inline constexpr T &&operator()(T &&arg) const noexcept
template<typename ...Us>
struct gviz::mtp::MixTypeInfo<TI, TypeInfos...>::mixer::inner

Public Types

using type = TypeInfo<Ts..., Us...>
template<typename ...Ts>
struct mixer
template<typename ...TypeInfos>
struct MixTypeInfo
template<typename TI>
struct gviz::mtp::MixTypeInfo<TI>

Public Types

using type = TI
template<typename TI, typename ...TypeInfos>
struct gviz::mtp::MixTypeInfo<TI, TypeInfos...>

Public Types

using mixer_type = typename TI::template expand_for_t<mixer>
using type = typename MixTypeInfo<TypeInfos...>::type::template expand_for_t<mixer_type::template inner>::type
template<>
struct gviz::mtp::MixTypeInfo<>

Public Types

using type = TypeInfo<>
template<std::size_t I, typename ...Ts>
struct gviz::mtp::PackDrop

Public Types

using type = TypeInfo<Ts...>
template<std::size_t I, typename T, typename ...Ts>
struct gviz::mtp::PackDrop<I, T, Ts...>

Public Types

using type = typename std::conditional<I == 0, TypeInfo<T, Ts...>, typename PackDrop<I - 1, Ts...>::type>::type
template<typename T>
struct gviz::mtp::staticptr_caster

Public Types

using pointer_type = std::add_pointer_t<std::remove_pointer_t<std::remove_reference_t<T>>>

Public Functions

template<typename U>
inline constexpr pointer_type operator()(U &&arg) const noexcept
template<typename ...Ts>
struct gviz::mtp::TypeInfo : public gviz::mtp::Expandable<Ts...>

Public Static Attributes

static constexpr auto size = sizeof...(Ts)
template<typename T, typename ...Ts>
struct gviz::mtp::TypeInfo<T, Ts...> : public gviz::mtp::Expandable<T, Ts...>

Public Types

using first = T

Public Static Attributes

static constexpr auto rest = TypeInfo<Ts...>{}
static constexpr auto size = 1 + sizeof...(Ts)
namespace gviz
namespace gviz::mtp

Typedefs

template<typename ...Ts>
using mix_typeinfo_t = typename MixTypeInfo<Ts...>::type

Variables

template<typename ...Ts>
constexpr bool all_unique_v = all_unique<Ts...>::value
template<typename ...Ts>
constexpr bool all_derive_from_v = all_derive_from<Ts...>::value
template<typename X, typename ...Ts>
constexpr std::size_t find_type_index_in_v = find_type_index_in<X, Ts...>::value
template<typename X, typename ...Ts>
constexpr bool has_type_in_v = has_type_in<X, Ts...>::value
namespace gviz::mtp::impl

Variables

template<typename T, typename ...Ts>
constexpr bool unique_in = (0 + ... + std::is_same_v<T, Ts>) == 1
namespace std
file mtputils.hpp
#include <>
#include <>
#include <>
dir /home/cthulhu/projects/repos/libgvizard/include/gvizard
dir /home/cthulhu/projects/repos/libgvizard/include