Botcraft 1.21.4
Loading...
Searching...
No Matches
Templates.hpp File Reference
#include <type_traits>

Go to the source code of this file.

Macros

#define GENERATE_CHECK_HAS_FUNC(FuncName)
 

Macro Definition Documentation

◆ GENERATE_CHECK_HAS_FUNC

#define GENERATE_CHECK_HAS_FUNC (   FuncName)
Value:
template <typename, typename = void, typename = void> \
constexpr bool has_##FuncName = false; \
\
template <typename T> \
constexpr bool has_##FuncName<T, \
typename ::std::enable_if_t<::std::is_member_function_pointer_v<decltype(&T::FuncName)>>> \
= true; \
\
template <typename T, typename Ret, typename... Args> \
constexpr bool has_##FuncName<T, Ret(Args...), \
::std::void_t<decltype(::std::declval<T>().FuncName(::std::declval<Args>()...))>> \
= ::std::is_same_v<decltype(::std::declval<T>().FuncName(::std::declval<Args>()...)), Ret>; \
static_assert(true, "") /* To require a ; after macro call */

Definition at line 9 of file Templates.hpp.