49#ifndef ETL_DELEGATE_CPP11_INCLUDED
50#define ETL_DELEGATE_CPP11_INCLUDED
57#include "../type_list.h"
70 delegate_exception(string_type reason_, string_type file_name_, numeric_type line_number_)
71 :
exception(reason_, file_name_, line_number_)
83 delegate_uninitialised(string_type file_name_, numeric_type line_number_)
84 : delegate_exception(ETL_ERROR_TEXT(
"delegate:uninitialised", ETL_DELEGATE_FILE_ID
"A"), file_name_, line_number_)
100 template <
typename T>
101 struct is_delegate : etl::bool_constant<etl::is_base_of<delegate_tag, T>::value>
106 template <
typename T>
107 inline constexpr bool is_delegate_v = is_delegate<T>::value;
113 template <
typename T>
119 template <
typename TReturn,
typename... TArgs>
125 using object_ptr =
void*;
128 using function_ptr = TReturn (*)(TArgs...);
153 template < typename TLambda, typename = etl::enable_if_t< etl::is_class<TLambda>::value && !is_delegate<TLambda>::value,
void>>
154 ETL_CONSTEXPR14
delegate(TLambda& instance) ETL_NOEXCEPT
156 assign(object_ptr(&instance), lambda_stub<TLambda>);
162 template < typename TLambda, typename = etl::enable_if_t< etl::is_class<TLambda>::value && !is_delegate<TLambda>::value,
void>>
163 ETL_CONSTEXPR14
delegate(
const TLambda& instance) ETL_NOEXCEPT
165 assign(object_ptr(&instance), const_lambda_stub<TLambda>);
172 template <
typename TLambda,
173 typename = etl::enable_if_t<etl::is_class<TLambda>::value && !etl::is_same<
etl::delegate<TReturn(TArgs...)>, TLambda>::value
174 && !etl::is_convertible<TLambda, function_ptr>::value,
176 ETL_CONSTEXPR14
delegate(TLambda&& instance) =
delete;
181 explicit ETL_CONSTEXPR14
delegate(function_ptr fp) ETL_NOEXCEPT
182 : invocation(fp, function_ptr_stub)
189 template <TReturn (*Method)(TArgs...)>
193 return delegate(function_stub<Method>);
199 template < typename TLambda, typename = etl::enable_if_t< etl::is_class<TLambda>::value && !is_delegate<TLambda>::value,
void>>
203 return delegate(object_ptr(&instance), lambda_stub<TLambda>);
209 template < typename TLambda, typename = etl::enable_if_t< etl::is_class<TLambda>::value && !is_delegate<TLambda>::value,
void>>
213 return delegate(object_ptr(&instance), const_lambda_stub<TLambda>);
222 return delegate(fp, function_ptr_stub);
228 template <
typename T, TReturn (T::*Method)(TArgs...)>
232 return delegate(object_ptr(&instance), method_stub<T, Method>);
239 template <
typename T, TReturn (T::*Method)(TArgs...)>
246 template <
typename T, TReturn (T::*Method)(TArgs...)
const>
250 return delegate(object_ptr(&instance), const_method_stub<T, Method>);
256 template <
typename T, TReturn (T::*Method)(TArgs...)
const>
262 template <
typename T, T& Instance, TReturn (T::*Method)(TArgs...)>
266 return delegate(method_instance_stub<T, Method, Instance>);
273 template <
typename T, TReturn (T::*Method)(TArgs...), T& Instance>
277 return delegate(method_instance_stub<T, Method, Instance>);
283 template <
typename T, T
const& Instance, TReturn (T::*Method)(TArgs...)
const>
287 return delegate(const_method_instance_stub<T, Method, Instance>);
294 template <
typename T, TReturn (T::*Method)(TArgs...)
const, T
const& Instance>
298 return delegate(const_method_instance_stub<T, Method, Instance>);
301#if !(defined(ETL_COMPILER_GCC) && (__GNUC__ <= 8))
306 template <
typename T, T& Instance>
310 return delegate(operator_instance_stub<T, Instance>);
317 template <TReturn (*Method)(TArgs...)>
318 ETL_CONSTEXPR14
void set() ETL_NOEXCEPT
320 assign(function_stub<Method>);
326 template < typename TLambda, typename = etl::enable_if_t< etl::is_class<TLambda>::value && !is_delegate<TLambda>::value,
void>>
327 ETL_CONSTEXPR14
void set(TLambda& instance) ETL_NOEXCEPT
329 assign(object_ptr(&instance), lambda_stub<TLambda>);
335 template < typename TLambda, typename = etl::enable_if_t< etl::is_class<TLambda>::value && !is_delegate<TLambda>::value,
void>>
336 ETL_CONSTEXPR14
void set(
const TLambda& instance) ETL_NOEXCEPT
338 assign(object_ptr(&instance), const_lambda_stub<TLambda>);
344 ETL_CONSTEXPR14
void set(function_ptr fp) ETL_NOEXCEPT
346 assign(fp, function_ptr_stub);
352 template <
typename T, TReturn (T::*Method)(TArgs...)>
353 ETL_CONSTEXPR14
void set(T& instance) ETL_NOEXCEPT
355 assign(object_ptr(&instance), method_stub<T, Method>);
361 template <
typename T, TReturn (T::*Method)(TArgs...)
const>
362 ETL_CONSTEXPR14
void set(T& instance) ETL_NOEXCEPT
364 assign(object_ptr(&instance), const_method_stub<T, Method>);
370 template <
typename T, T& Instance, TReturn (T::*Method)(TArgs...)>
371 ETL_CONSTEXPR14
void set() ETL_NOEXCEPT
373 assign(method_instance_stub<T, Method, Instance>);
380 template <
typename T, TReturn (T::*Method)(TArgs...), T& Instance>
381 ETL_CONSTEXPR14
void set() ETL_NOEXCEPT
383 assign(method_instance_stub<T, Method, Instance>);
389 template <
typename T, T
const& Instance, TReturn (T::*Method)(TArgs...)
const>
390 ETL_CONSTEXPR14
void set() ETL_NOEXCEPT
392 assign(const_method_instance_stub<T, Method, Instance>);
399 template <
typename T, TReturn (T::*Method)(TArgs...)
const, T
const& Instance>
400 ETL_CONSTEXPR14
void set() ETL_NOEXCEPT
402 assign(const_method_instance_stub<T, Method, Instance>);
408 ETL_CONSTEXPR14
void clear() ETL_NOEXCEPT
416 template <
typename... TCallArgs>
419 ETL_STATIC_ASSERT((
sizeof...(TCallArgs) ==
sizeof...(TArgs)),
"Incorrect number of parameters passed to delegate");
420 ETL_STATIC_ASSERT((etl::type_lists_are_convertible<etl::type_list<TCallArgs&&...>,
argument_types>::value),
421 "Incompatible parameter types passed to delegate");
425 return (*invocation.stub)(invocation, etl::forward<TCallArgs>(args)...);
432 template <
typename TRet = TReturn,
typename... TCallArgs>
433 ETL_CONSTEXPR14
typename etl::enable_if_t<etl::is_same<TRet, void>::value,
bool>
call_if(TCallArgs&&... args)
const
435 ETL_STATIC_ASSERT((
sizeof...(TCallArgs) ==
sizeof...(TArgs)),
"Incorrect number of parameters passed to delegate");
436 ETL_STATIC_ASSERT((etl::type_lists_are_convertible<etl::type_list<TCallArgs&&...>,
argument_types>::value),
437 "Incompatible parameter types passed to delegate");
441 (*invocation.stub)(invocation, etl::forward<TCallArgs>(args)...);
454 template <
typename TRet = TReturn,
typename... TCallArgs>
457 ETL_STATIC_ASSERT((
sizeof...(TCallArgs) ==
sizeof...(TArgs)),
"Incorrect number of parameters passed to delegate");
458 ETL_STATIC_ASSERT((etl::type_lists_are_convertible<etl::type_list<TCallArgs&&...>,
argument_types>::value),
459 "Incompatible parameter types passed to delegate");
465 result = (*invocation.stub)(invocation, etl::forward<TCallArgs>(args)...);
475 template <
typename TAlternative,
typename... TCallArgs>
476 ETL_CONSTEXPR14 TReturn
call_or(TAlternative&& alternative, TCallArgs&&... args)
const
478 ETL_STATIC_ASSERT((
sizeof...(TCallArgs) ==
sizeof...(TArgs)),
"Incorrect number of parameters passed to delegate");
479 ETL_STATIC_ASSERT((etl::type_lists_are_convertible<etl::type_list<TCallArgs&&...>,
argument_types>::value),
480 "Incompatible parameter types passed to delegate");
484 return (*invocation.stub)(invocation, etl::forward<TCallArgs>(args)...);
488 return etl::forward<TAlternative>(alternative)(etl::forward<TCallArgs>(args)...);
496 template <TReturn (*Method)(TArgs...),
typename... TCallArgs>
497 ETL_CONSTEXPR14 TReturn
call_or(TCallArgs&&... args)
const
499 ETL_STATIC_ASSERT((
sizeof...(TCallArgs) ==
sizeof...(TArgs)),
"Incorrect number of parameters passed to delegate");
500 ETL_STATIC_ASSERT((etl::type_lists_are_convertible<etl::type_list<TCallArgs&&...>,
argument_types>::value),
501 "Incompatible parameter types passed to delegate");
505 return (*invocation.stub)(invocation, etl::forward<TCallArgs>(args)...);
509 return (Method)(etl::forward<TCallArgs>(args)...);
521 template < typename TLambda, typename = etl::enable_if_t< etl::is_class<TLambda>::value && !is_delegate<TLambda>::value,
void>>
524 assign(object_ptr(&instance), lambda_stub<TLambda>);
531 template < typename TLambda, typename = etl::enable_if_t< etl::is_class<TLambda>::value && !is_delegate<TLambda>::value,
void>>
534 assign(object_ptr(&instance), const_lambda_stub<TLambda>);
543 if (fp == ETL_NULLPTR)
549 assign(fp, function_ptr_stub);
559 return invocation == rhs.invocation;
567 return invocation != rhs.invocation;
573 ETL_NODISCARD ETL_CONSTEXPR14
bool is_valid() const ETL_NOEXCEPT
578 if (etl::is_constant_evaluated())
580 return static_cast<bool>(invocation.stub);
583 return invocation.stub != ETL_NULLPTR;
589 ETL_NODISCARD ETL_CONSTEXPR14
operator bool() const ETL_NOEXCEPT
600 template <
typename TCallableType,
typename =
void>
605 template <
typename TCallableType>
606 struct is_invocable_with< TCallableType,
etl::void_t<decltype(etl::declval<TCallableType&>()(etl::declval<TArgs>()...))>>
607 :
etl::bool_constant< etl::is_convertible< decltype(etl::declval<TCallableType&>()(etl::declval<TArgs>()...)), TReturn>::value>
611 template <
typename TCallableType,
typename =
void>
616 template <
typename TCallableType>
617 struct is_invocable_with_const< TCallableType, etl::void_t<decltype(etl::declval<const TCallableType&>()(etl::declval<TArgs>()...))>>
618 : etl::bool_constant< etl::is_convertible< decltype(etl::declval<const TCallableType&>()(etl::declval<TArgs>()...)), TReturn>::value>
622 template <
typename TCallableType>
623 struct is_compatible_callable : etl::bool_constant<is_invocable_with<TCallableType>::value || is_invocable_with_const<TCallableType>::value>
630 struct invocation_element
633 using stub_type = TReturn (*)(
const invocation_element&, TArgs...);
638 ETL_CONSTEXPR14 invocation_element() ETL_NOEXCEPT
639 : ptr(object_ptr(ETL_NULLPTR))
648 ETL_CONSTEXPR14 invocation_element(stub_type stub_) ETL_NOEXCEPT
657 ETL_CONSTEXPR14 invocation_element(object_ptr object_, stub_type stub_) ETL_NOEXCEPT
666 ETL_CONSTEXPR14 invocation_element(function_ptr fp_, stub_type stub_) ETL_NOEXCEPT
675 ETL_CONSTEXPR14
bool operator==(
const invocation_element& rhs)
const ETL_NOEXCEPT
677 return (rhs.stub == stub) && ((stub == function_ptr_stub) ? (rhs.ptr.fp == ptr.fp) : (rhs.ptr.object == ptr.object));
683 ETL_CONSTEXPR14
bool operator!=(
const invocation_element& rhs)
const ETL_NOEXCEPT
691 ETL_CONSTEXPR14
void clear() ETL_NOEXCEPT
703 :
object(ETL_NULLPTR)
708 ETL_CONSTEXPR14
ptr_type(object_ptr object_) ETL_NOEXCEPT
714 ETL_CONSTEXPR14
ptr_type(function_ptr fp_) ETL_NOEXCEPT
728 using stub_type =
typename invocation_element::stub_type;
733 ETL_CONSTEXPR14
delegate(object_ptr
object, stub_type stub) ETL_NOEXCEPT
734 : invocation(
object, stub)
741 ETL_CONSTEXPR14 delegate(function_ptr fp, stub_type stub) ETL_NOEXCEPT
742 : invocation(fp, stub)
749 ETL_CONSTEXPR14 delegate(stub_type stub) ETL_NOEXCEPT
757 ETL_CONSTEXPR14
void assign(object_ptr
object, stub_type stub) ETL_NOEXCEPT
759 invocation.ptr.object = object;
760 invocation.stub = stub;
766 ETL_CONSTEXPR14
void assign(function_ptr fp, stub_type stub) ETL_NOEXCEPT
768 invocation.ptr.fp = fp;
769 invocation.stub = stub;
775 ETL_CONSTEXPR14
void assign(stub_type stub) ETL_NOEXCEPT
777 invocation.ptr.object = ETL_NULLPTR;
778 invocation.stub = stub;
784 template <
typename T, TReturn (T::*Method)(TArgs...)>
785 static ETL_CONSTEXPR14 TReturn method_stub(
const invocation_element& invocation, TArgs... args)
787 T* p =
static_cast<T*
>(invocation.ptr.object);
788 return (p->*Method)(etl::forward<TArgs>(args)...);
794 template <
typename T, TReturn (T::*Method)(TArgs...)
const>
795 static ETL_CONSTEXPR14 TReturn const_method_stub(
const invocation_element& invocation, TArgs... args)
797 T*
const p =
static_cast<T*
>(invocation.ptr.object);
798 return (p->*Method)(etl::forward<TArgs>(args)...);
804 template <
typename T, TReturn (T::*Method)(TArgs...), T& Instance>
805 static ETL_CONSTEXPR14 TReturn method_instance_stub(
const invocation_element&, TArgs... args)
807 return (Instance.*Method)(etl::forward<TArgs>(args)...);
813 template <
typename T, TReturn (T::*Method)(TArgs...)
const,
const T& Instance>
814 static ETL_CONSTEXPR14 TReturn const_method_instance_stub(
const invocation_element&, TArgs... args)
816 return (Instance.*Method)(etl::forward<TArgs>(args)...);
819#if !(defined(ETL_COMPILER_GCC) && (__GNUC__ <= 8))
823 template <
typename T, T& Instance>
824 static ETL_CONSTEXPR14 TReturn operator_instance_stub(
const invocation_element&, TArgs... args)
826 return Instance.operator()(etl::forward<TArgs>(args)...);
833 template <TReturn (*Method)(TArgs...)>
834 static ETL_CONSTEXPR14 TReturn function_stub(
const invocation_element&, TArgs... args)
836 return (Method)(etl::forward<TArgs>(args)...);
842 static TReturn function_ptr_stub(
const invocation_element& invocation, TArgs... args)
844 return invocation.ptr.fp(etl::forward<TArgs>(args)...);
850 template <
typename TLambda>
851 static ETL_CONSTEXPR14 TReturn lambda_stub(
const invocation_element& invocation, TArgs... arg)
853 ETL_STATIC_ASSERT(is_compatible_callable<TLambda>::value,
"etl::delegate: bound lambda/functor is not compatible with the delegate signature");
855 TLambda* p =
static_cast<TLambda*
>(invocation.ptr.object);
856 return (p->operator())(etl::forward<TArgs>(arg)...);
862 template <
typename TLambda>
863 static ETL_CONSTEXPR14 TReturn const_lambda_stub(
const invocation_element& invocation, TArgs... arg)
865 ETL_STATIC_ASSERT(is_compatible_callable<TLambda>::value,
"etl::delegate: bound lambda/functor is not compatible with the delegate signature");
867 const TLambda* p =
static_cast<const TLambda*
>(invocation.ptr.object);
868 return (p->operator())(etl::forward<TArgs>(arg)...);
874 invocation_element invocation;
881 template <auto Function>
883 constexpr auto make_delegate() ETL_NOEXCEPT
885 using function_type =
typename etl::function_traits<
decltype(Function)>::function_type;
887 return etl::delegate<function_type>::template create<Function>();
893 template <typename TLambda, typename = etl::enable_if_t<etl::is_class<TLambda>::value,
void>>
895 constexpr auto make_delegate(TLambda& instance) ETL_NOEXCEPT
897 using function_type =
typename etl::function_traits<
decltype(&TLambda::operator())>::function_type;
899 return etl::delegate<function_type>(instance);
905 template <
typename T, T& Instance>
907 constexpr auto make_delegate() ETL_NOEXCEPT
909 using function_type =
typename etl::function_traits<
decltype(&T::operator())>::function_type;
911 return etl::delegate<function_type>::template create<T, Instance>();
917 template <
typename T, auto Method, T& Instance,
typename = etl::enable_if_t< !etl::function_traits<decltype(Method)>::is_const>>
919 constexpr auto make_delegate() ETL_NOEXCEPT
921 using function_type =
typename etl::function_traits<
decltype(Method)>::function_type;
923 return etl::delegate<function_type>::template create<T, Method, Instance>();
929 template <
typename T, auto Method, const T& Instance,
typename = etl::enable_if_t< etl::function_traits<decltype(Method)>::is_const>>
931 constexpr auto make_delegate() ETL_NOEXCEPT
933 using function_type =
typename etl::function_traits<
decltype(Method)>::function_type;
935 return etl::delegate<function_type>::template create<T, Method, Instance>();
941 template <
typename T, auto Method>
943 constexpr auto make_delegate(T& instance) ETL_NOEXCEPT
945 using function_type =
typename etl::function_traits<
decltype(Method)>::function_type;
947 return etl::delegate<function_type>::template create<T, Method>(instance);
953 template <
typename T, auto Method>
955 constexpr auto make_delegate(
const T& instance) ETL_NOEXCEPT
957 using function_type =
typename etl::function_traits<
decltype(Method)>::function_type;
959 return etl::delegate<function_type>::template create<T, Method>(instance);
ETL_NODISCARD ETL_CONSTEXPR14 bool operator==(const delegate &rhs) const ETL_NOEXCEPT
Checks equality.
Definition delegate_cpp11.h:557
static ETL_NODISCARD ETL_CONSTEXPR14 delegate create(const TLambda &instance) ETL_NOEXCEPT
Create from const Lambda or Functor.
Definition delegate_cpp11.h:211
ETL_CONSTEXPR14 delegate(const delegate &other)=default
Copy constructor.
ETL_CONSTEXPR14 bool operator!=(const delegate &rhs) const ETL_NOEXCEPT
Returns true if the delegate is valid.
Definition delegate_cpp11.h:565
ETL_CONSTEXPR14 void set(function_ptr fp) ETL_NOEXCEPT
Set from a function pointer.
Definition delegate_cpp11.h:344
ETL_CONSTEXPR14 void set(TLambda &instance) ETL_NOEXCEPT
Set from Lambda or Functor.
Definition delegate_cpp11.h:327
ETL_CONSTEXPR14 void clear() ETL_NOEXCEPT
Clear the delegate.
Definition delegate_cpp11.h:408
ETL_CONSTEXPR14 delegate(const TLambda &instance) ETL_NOEXCEPT
Construct from a const lambda or functor.
Definition delegate_cpp11.h:163
ETL_CONSTEXPR14 void set() ETL_NOEXCEPT
Set from function (Compile time).
Definition delegate_cpp11.h:318
static ETL_NODISCARD ETL_CONSTEXPR14 delegate create() ETL_NOEXCEPT
Definition delegate_cpp11.h:308
static ETL_NODISCARD ETL_CONSTEXPR14 delegate create(T &instance) ETL_NOEXCEPT
Create from instance method (Run time).
Definition delegate_cpp11.h:230
ETL_CONSTEXPR14 delegate(function_ptr fp) ETL_NOEXCEPT
Construct from a function pointer.
Definition delegate_cpp11.h:181
ETL_CONSTEXPR14 TReturn call_or(TCallArgs &&... args) const
Definition delegate_cpp11.h:497
ETL_CONSTEXPR14 delegate & operator=(function_ptr fp) ETL_NOEXCEPT
Assign from a function pointer.
Definition delegate_cpp11.h:541
delegate & operator=(const delegate &rhs)=default
Assignment.
ETL_CONSTEXPR14 delegate(TLambda &&instance)=delete
static ETL_NODISCARD ETL_CONSTEXPR14 delegate create() ETL_NOEXCEPT
Create from function (Compile time).
Definition delegate_cpp11.h:191
static ETL_CONSTEXPR14 delegate create(T &&instance)=delete
Disable create from rvalue instance method (Run time).
etl::type_list< TArgs... > argument_types
Type list of the delegate's argument types.
Definition delegate_cpp11.h:136
ETL_CONSTEXPR14 etl::enable_if_t< etl::is_same< TRet, void >::value, bool > call_if(TCallArgs &&... args) const
Definition delegate_cpp11.h:433
static ETL_NODISCARD ETL_CONSTEXPR14 delegate create(T &&instance)=delete
static ETL_NODISCARD ETL_CONSTEXPR14 delegate create(TLambda &instance) ETL_NOEXCEPT
Create from Lambda or Functor.
Definition delegate_cpp11.h:201
ETL_CONSTEXPR14 return_type operator()(TCallArgs &&... args) const
Execute the delegate.
Definition delegate_cpp11.h:417
ETL_CONSTEXPR14 TReturn call_or(TAlternative &&alternative, TCallArgs &&... args) const
Definition delegate_cpp11.h:476
ETL_CONSTEXPR14 delegate & operator=(TLambda &instance) ETL_NOEXCEPT
Create from Lambda or Functor.
Definition delegate_cpp11.h:522
ETL_CONSTEXPR14 delegate() ETL_NOEXCEPT
Default constructor.
Definition delegate_cpp11.h:141
TReturn return_type
The delegate's return type.
Definition delegate_cpp11.h:133
ETL_CONSTEXPR14 delegate(TLambda &instance) ETL_NOEXCEPT
Construct from a lambda or functor.
Definition delegate_cpp11.h:154
ETL_CONSTEXPR14 delegate & operator=(const TLambda &instance) ETL_NOEXCEPT
Create from const Lambda or Functor.
Definition delegate_cpp11.h:532
static ETL_NODISCARD ETL_CONSTEXPR14 delegate create() ETL_NOEXCEPT
Create from instance method (Compile time).
Definition delegate_cpp11.h:264
static ETL_NODISCARD ETL_CONSTEXPR14 delegate create(const T &instance) ETL_NOEXCEPT
Create from const instance method (Run time).
Definition delegate_cpp11.h:248
static ETL_NODISCARD ETL_CONSTEXPR14 delegate create(function_ptr fp) ETL_NOEXCEPT
Create from a function pointer.
Definition delegate_cpp11.h:220
ETL_CONSTEXPR14 void set() ETL_NOEXCEPT
Set from instance method (Compile time).
Definition delegate_cpp11.h:371
ETL_CONSTEXPR14 void set(T &instance) ETL_NOEXCEPT
Set from instance method (Run time).
Definition delegate_cpp11.h:353
ETL_CONSTEXPR14 void set(const TLambda &instance) ETL_NOEXCEPT
Set from const Lambda or Functor.
Definition delegate_cpp11.h:336
ETL_CONSTEXPR14 etl::enable_if_t<!etl::is_same< TRet, void >::value, etl::optional< TReturn > > call_if(TCallArgs &&... args) const
Definition delegate_cpp11.h:455
ETL_NODISCARD ETL_CONSTEXPR14 bool is_valid() const ETL_NOEXCEPT
Returns true if the delegate is valid.
Definition delegate_cpp11.h:573
The base class for delegate exceptions.
Definition delegate_cpp03.h:149
The exception thrown when the delegate is uninitialised.
Definition delegate_cpp03.h:162
Declaration.
Definition delegate_cpp03.h:191
#define ETL_ASSERT(b, e)
Definition error_handler.h:511
ETL_EXCEPTION_CONSTEXPR exception(string_type reason_, string_type, numeric_type)
Constructor.
Definition exception.h:81
Definition exception.h:59
Definition optional.h:1238
integral_constant< bool, false > false_type
integral_constant specialisations
Definition type_traits.h:80
Definition type_traits.h:97
Definition delegate_cpp03.h:176
is_delegate
Definition delegate_cpp03.h:184
ETL_CONSTEXPR14 bool operator==(const etl::to_arithmetic_result< T > &lhs, const etl::to_arithmetic_result< T > &rhs)
Equality test for etl::to_arithmetic_result.
Definition to_arithmetic.h:903
ETL_CONSTEXPR14 bool operator!=(const etl::to_arithmetic_result< T > &lhs, const etl::to_arithmetic_result< T > &rhs)
Inequality test for etl::to_arithmetic_result.
Definition to_arithmetic.h:937
ETL_CONSTEXPR14 ptr_type(object_ptr object_) ETL_NOEXCEPT
Constructs with the object pointer as the active member.
Definition delegate_cpp11.h:708
ETL_CONSTEXPR14 ptr_type(function_ptr fp_) ETL_NOEXCEPT
Constructs with the function pointer as the active member.
Definition delegate_cpp11.h:714
ETL_CONSTEXPR14 ptr_type() ETL_NOEXCEPT
Default-constructs with a null object pointer as the active member.
Definition delegate_cpp11.h:702