1 #ifndef SIPLASPLAS_TYPEERASURE_FIELD_HPP 2 #define SIPLASPLAS_TYPEERASURE_FIELD_HPP 4 #include "function.hpp" 24 template<
typename Storage,
typename ObjectArgStorage = Storage>
37 return _invoke.empty();
52 cpp::FunctionKind
kind()
const 54 return _invoke.kind();
60 template<
typename T,
typename = std::enable_if_t<
61 std::is_member_object_pointer<std::decay_t<T>>::value
64 _invoke{std::forward<T>(field)}
78 template<
typename Object>
79 decltype(
auto)
get(const Object&
object)
const 81 return _invoke(
object);
98 template<
typename T,
typename Object>
99 decltype(
auto)
getAs(const Object&
object)
const 101 return get(object).
template get<T>();
115 template<
typename Object>
125 decltype(
auto)
get(Object&
object)
const 127 return _invoke(
object);
144 template<
typename T,
typename Object>
145 decltype(
auto)
getAs(Object&
object)
const 147 return get(object).
template get<T>();
161 template<
typename Storage_>
164 return _invoke(
object.getReference());
181 template<
typename T,
typename Storage_>
184 return get(object).
template get<T>();
198 template<
typename Storage_>
201 return _invoke(
object.getReference());
217 return _invoke(
object);
233 return _invoke(
object);
249 template<
typename T,
typename Storage_>
252 return get(object).
template get<T>();
260 std::is_member_object_pointer<std::decay_t<T>>::value,
265 _invoke = std::forward<T>(field);
281 return _invoke.template get<T>();
296 return _invoke.template get<T>();
332 #endif // SIPLASPLAS_TYPEERASURE_FIELD_HPP cpp::SimpleAny specialization for non-owning const references to existing objects. See cpp::ConstNonOwningStorage
Definition: simpleany.hpp:41
Definition: canary_allocator.hpp:7
Stores a type erased member object pointer.
Definition: field.hpp:25
std::enable_if_t< std::is_member_object_pointer< std::decay_t< T > >::value, Field & > operator=(T &&field)
Assigns a new member object pointer to the Field object.
Definition: field.hpp:263
const T & get() const
Returns a reference to the member object pointer stored by the Field object.
Definition: field.hpp:279
cpp::SimpleAny specialization for non-owning references to existing objects. See cpp::NonOwningStorag...
Definition: simpleany.hpp:162
decltype(auto) getAs(const Object &object) const
Returns the value of the member object of a given object.
Definition: field.hpp:99
Implements a type-erased value container with minimal value semantics requirements.
Definition: simpleany.hpp:15
Field(T &&field)
Initializes a Field with a given member object pointer.
Definition: field.hpp:63
Stores a type-erased callable of any signature and kind.
Definition: function.hpp:58
bool empty() const
Checks if the field is empty Empty is defined as having no member object pointer assigned to the Fiel...
Definition: field.hpp:35
cpp::FunctionKind kind() const
Returns a reference to the member object pointer stored by the Field object.
Definition: field.hpp:52