When you want to register a method or a constructor which contains default arguments, you have to provide them RTTR explicitly. The reason for this is, default arguments are not part of the function signature. Nevertheless, RTTR provides a mechanism to register functions with default arguments.
Please take a look at following example:
void my_function(int a, bool b, const std::string& text, const int* ptr);
{
(
);
}
static bind< detail::meth, detail::invalid_type, F, detail::public_access, Visitor_List > method(string_view name, F f)
Register a method to this class.
Definition access_levels.h:34
detail::default_args< TArgs... > default_arguments(TArgs &&...args)
The default_arguments function should be used add default arguments, for constructors or a methods du...
#define RTTR_REGISTRATION
Use this macro to automatically register your reflection information to RTTR before main is called.
Definition registration.h:745
The default arguments has to be provided via the function: default_arguments(). Place the call in the ()
operator of the returned bind object.
The function has following synopsis:
template<typename...TArgs>
The values will be copied internally and will be provided during invoke of the method or constructor, when the corresponding argument is missing:
int main()
{
}
The instance class is used for forwarding the instance of an object to invoke a property or method.
Definition instance.h:48
The method class provides several meta information about a method and can be invoked.
Definition method.h:122
variant invoke(instance object) const
Invokes the method represented by the current instance object.
static method get_global_method(string_view name) noexcept
Returns a global method with the name name.
The variant class allows to store data of any type and convert between these types transparently.
Definition variant.h:199
bool is_valid() const
Returns true if this variant is valid, that means the variant is holding some data.
The following snippet will not compile and will raise a static_assert:
void my_function(int a, bool b, const std::string& text, const int* ptr);
{
(
);
}
Every method and constructor can have default arguments.