27 #ifndef RTTR_CONSTRUCTOR_H_
28 #define RTTR_CONSTRUCTOR_H_
30 #include "rttr/detail/base/core_prerequisites.h"
31 #include "rttr/detail/misc/class_item_mapper.h"
50 class constructor_wrapper_base;
88 class RTTR_API constructor
96 bool is_valid() const RTTR_NOEXCEPT;
103 explicit operator
bool() const RTTR_NOEXCEPT;
120 type get_instantiated_type() const RTTR_NOEXCEPT;
130 type get_declaring_type() const RTTR_NOEXCEPT;
144 array_range<parameter_info> get_parameter_infos() const RTTR_NOEXCEPT;
154 variant get_metadata(const variant& key) const;
167 variant invoke() const;
181 variant invoke(argument arg1) const;
195 variant invoke(argument arg1, argument arg2) const;
209 variant invoke(argument arg1, argument arg2, argument arg3) const;
223 variant invoke(argument arg1, argument arg2, argument arg3, argument arg4) const;
237 variant invoke(argument arg1, argument arg2, argument arg3, argument arg4,
238 argument arg5) const;
252 variant invoke(argument arg1, argument arg2, argument arg3, argument arg4,
253 argument arg5, argument arg6) const;
269 variant invoke_variadic(std::vector<argument> args) const;
276 bool operator==(const constructor& other) const RTTR_NOEXCEPT;
283 bool operator!=(const constructor& other) const RTTR_NOEXCEPT;
286 constructor(const detail::constructor_wrapper_base* wrapper) RTTR_NOEXCEPT;
289 friend T detail::create_item(const detail::class_item_to_wrapper_t<T>* wrapper);
291 friend T detail::create_invalid_item();
294 const detail::constructor_wrapper_base* m_wrapper;
299 #endif // RTTR_CONSTRUCTOR_H_