Let's start with the traditional hello world example.
When you need to reflect a property, or like in this case a free function, you need to include first
#include <rttr/registration>. This will include everything necessary for creating the reflection information.
The macro RTTR_REGISTRATION must be placed outside of any function or class, just place directly into in your cpp file. This macro executes the register process before
main is called, that has the advantage that this reflection information is directly available when
main is called. When on the other hand the register calls are invoked manually, then these calls must be synchronized with the calls retrieving the type information. Otherwise invalid data will be returned. Remark that this macro can only be placed one-time in a source file, otherwise you will get an compile error.
The shortest way to invoke the function
f() is to call type::invoke(). It requires the exact name of the free function and a vector of arguments. You can check whether the call was successful with checking the return value. When the returned variant is valid the call was successful, otherwise not.