btu/common/metaprogramming.hpp file

Namespaces

namespace btu
namespace btu::common

Classes

template <class... Ts>
struct btu::common::Overload
template <class T, class... Ts>
struct btu::common::is_variant_member<T, std::variant<Ts...>>
template <class>
struct btu::common::is_mutable_lambda_helper
template <class Ret, class Class, class... Args>
struct btu::common::is_mutable_lambda_helper<Ret(Class::*)(Args...) const>
template <class Ret, class Class, class... Args>
struct btu::common::is_mutable_lambda_helper<Ret(Class::*)(Args...)>
template <class T>
struct btu::common::is_mutable_lambda

Typedefs

template <typename T, typename U>
using is_equiv = std::is_same<std::remove_cvref_t<T>, std::remove_cvref_t<U>>

Functions

template <class... Ts>
Overload(Ts...) →  Overload< Ts... >
template <class T, class U>
auto forward_like(U&& x) →  decltype(auto) constexpr noexcept
See https://en.cppreference.com/w/cpp/utility/forward_like.
template <typename E>
auto to_underlying(E e) →  std::underlying_type_t<E> constexpr

Variables

template <typename T, typename U>
bool is_equiv_v constexpr
template <class T>
bool is_mutable_lambda_v constexpr
template <class T, class... Ts>
bool is_variant_member_v constexpr

Defines

#define BETHUTIL_MAKE_ALL_ENUM_OPERATORS(a_type)
#define BETHUTIL_MAKE_ENUM_OPERATOR_PAIR(a_type, a_op)
#define BTU_FWD(...)
#define BTU_MOV(...)