Loading...
Searching...
No Matches
Go to the documentation of this file.
6 #define REQUIRE_METHOD_EXPR(ret, obj, name, args) \
7 std::is_same_v<decltype(&NS(obj, name)), ret(*) args>
8 #define REQUIRE_CONSTANT_TYPE_EXPR(obj, name, Type) \
9 std::is_same_v<std::remove_cv_t<std::remove_reference_t<decltype(NS(obj, name))>>, Type>
11 #define REQUIRE_METHOD_EXPR(ret, obj, name, args) \
12 _Generic(&NS(obj, name), ret(*) args: 1, default: 0)
13 #define REQUIRE_CONSTANT_TYPE_EXPR(obj, name, Type) \
14 _Generic((NS(obj, name)), Type: 1, default: 0)
17#define REQUIRE_METHOD(ret, obj, name, args) \
18 STATIC_ASSERT(REQUIRE_METHOD_EXPR(ret, obj, name, args), \
19 "Method " #obj "." #name " must exist with type " #ret " (*)" #args)
21#define REQUIRE_TYPE(obj, name) \
22 STATIC_ASSERT(sizeof(NS(obj, name)), "Type " #obj "." #name " must exist")
24#define REQUIRE_CONSTANT_TYPE(obj, name, type) \
25 STATIC_ASSERT(REQUIRE_CONSTANT_TYPE_EXPR(obj, name, type), \
26 "Method " #obj "." #name " must exist and be of type " #type)
28#define REQUIRE_CONSTANT(obj, name) \
29 STATIC_ASSERT(sizeof(NS(obj, name)), "Constant " #obj "." #name " must exist")