68 class [[deprecated (
"Since Stroika v3.0d25 - use std::function; for callbacks to remove later, Execution::CallbackRegistry")]]
Function {
70 using STDFUNCTION = function<FUNCTION_SIGNATURE>;
75 using result_type =
typename STDFUNCTION::result_type;
94#if qCompilerAndStdLib_template_Requires_constraint_not_treated_constexpr_Buggy
95 template <
typename CTOR_FUNC_SIG, enable_if_t<is_convertible_v<remove_cvref_t<CTOR_FUNC_SIG>, function<FUNCTION_SIGNATURE>> and
96 not derived_from<remove_cvref_t<CTOR_FUNC_SIG>, Function<FUNCTION_SIGNATURE>>>* =
nullptr>
99 template <
typename CTOR_FUNC_SIG>
100 requires (is_convertible_v<remove_cvref_t<CTOR_FUNC_SIG>, function<FUNCTION_SIGNATURE>> and
103#if qCompilerAndStdLib_RequiresNotMatchInlineOutOfLineForTemplateClassBeingDefined_Buggy
104 : fFun_{forward<CTOR_FUNC_SIG> (f)}
105 , fOrdering_{fFun_ ==
nullptr ? OrderingType_{} : ++Private_::sFunctionObjectNextPtrID_}
107 Assert ((fOrdering_ == OrderingType_{}) == (fFun_ ==
nullptr));
116 nonvirtual Function& operator= (Function&&) =
default;
117 nonvirtual Function& operator= (
const Function&) =
default;
122 nonvirtual
operator STDFUNCTION ()
const;
127 template <
typename... Args>
128 nonvirtual result_type operator() (Args... args)
const;
131 struct ThreeWayComparer;
136 nonvirtual strong_ordering operator<=> (
const Function& rhs)
const;
141 nonvirtual
bool operator== (
const Function& rhs)
const;
147 nonvirtual Characters::String
ToString ()
const;
161 using OrderingType_ = uint32_t;
162 OrderingType_ fOrdering_{};