66 using SignatureType = ReturnType(ArgTypes...);
68 template <
typename T1,
typename T2>
69 using has_same_decayed_type =
typename std::integral_constant<
71 bool(std::is_same<
typename std::decay<T1>::type,
typename std::decay<T2>::type>::value)>;
86 template <typename CallableType,
88 && !has_same_decayed_type<CallableType,
function_ref>::value
108 ReturnType operator()(ArgTypes... args) const noexcept;
112 explicit operator
bool() const noexcept;
119 void* m_pointerToCallable{
nullptr};
120 ReturnType (*m_functionPointer)(
void*, ArgTypes...){
nullptr};