Rebind is a simple, tiny C++20 reflection library for aggregates and enums.
This library is fully compiler agnostic as it figures out how to demangle given types at compile time.
-
Using CPM
CPMFindPackage( NAME rebind VERSION 3.0.0 GIT_REPOSITORY "https://github.com/Curve/rebind" )
-
Using FetchContent
include(FetchContent) FetchContent_Declare(rebind GIT_REPOSITORY "https://github.com/Curve/rebind" GIT_TAG v3.0.0) FetchContent_MakeAvailable(rebind) target_link_libraries(<target> cr::rebind)
Lines 9 to 11 in d8b79fa
Lines 22 to 33 in d8b79fa
Lines 37 to 45 in d8b79fa
π§ͺ For more examples see tests
template <typename T>
static constexpr auto type_name = /*...*/;
Returns: Human readable name of type
T
template <auto T>
static constexpr auto nttp_name = /*...*/;
Returns: Human readable name of the given nttp
T
template <typename T>
static constexpr auto arity = /*...*/;
Returns: Count of members of
T
template <typename T>
constexpr auto to_tuple(T &value);
Returns: A tuple of references to all members of the given
value
template <typename T>
static constexpr auto members = /*...*/;
Returns: A
rebind::member
object for each member present in the aggregate
Contains: Thetype
,name
andindex
template <auto T>
static constexpr auto member_name = /*...*/;
Returns: The member name of the given member pointer
template <auto T>
static constexpr auto enum_name = /*...*/;
Returns: The name of the given enum value
Note: To get the name of an enum-type userebind::type_name
instead
template <typename T>
static constexpr auto enum_values = /*...*/;
Returns: All values of the given enum
T
(specializerebind::search_min
/rebind::search_max
to tweak the search range)