diff --git a/stl/inc/functional b/stl/inc/functional index 80621ff9436..83a3f39e626 100644 --- a/stl/inc/functional +++ b/stl/inc/functional @@ -1535,6 +1535,8 @@ _NODISCARD void* _Function_new_large(_CTypes&&... _Args) { template class _Move_only_function_base { public: + using result_type = _Rx; + struct _Impl_t { // A per-callable-type structure acting as a virtual function table. // Using vtable emulations gives more flexibility for optimizations and reduces the amount of RTTI data. // (The RTTI savings may be significant as with lambdas and binds there may be many distinct callable types. @@ -1719,8 +1721,6 @@ class _Move_only_function_call { template class _Move_only_function_call<_Rx(_Types...)> : public _Move_only_function_base<_Rx, false, _Types...> { public: - using result_type = _Rx; - template using _VtInvQuals = _Vt&; @@ -1736,8 +1736,6 @@ public: template class _Move_only_function_call<_Rx(_Types...) &> : public _Move_only_function_base<_Rx, false, _Types...> { public: - using result_type = _Rx; - template using _VtInvQuals = _Vt&; @@ -1752,8 +1750,6 @@ public: template class _Move_only_function_call<_Rx(_Types...) &&> : public _Move_only_function_base<_Rx, false, _Types...> { public: - using result_type = _Rx; - template using _VtInvQuals = _Vt&&; @@ -1768,8 +1764,6 @@ public: template class _Move_only_function_call<_Rx(_Types...) const> : public _Move_only_function_base<_Rx, false, _Types...> { public: - using result_type = _Rx; - template using _VtInvQuals = const _Vt&; @@ -1785,8 +1779,6 @@ public: template class _Move_only_function_call<_Rx(_Types...) const&> : public _Move_only_function_base<_Rx, false, _Types...> { public: - using result_type = _Rx; - template using _VtInvQuals = const _Vt&; @@ -1801,8 +1793,6 @@ public: template class _Move_only_function_call<_Rx(_Types...) const&&> : public _Move_only_function_base<_Rx, false, _Types...> { public: - using result_type = _Rx; - template using _VtInvQuals = const _Vt&&; @@ -1818,8 +1808,6 @@ public: template class _Move_only_function_call<_Rx(_Types...) noexcept> : public _Move_only_function_base<_Rx, true, _Types...> { public: - using result_type = _Rx; - template using _VtInvQuals = _Vt&; @@ -1835,8 +1823,6 @@ public: template class _Move_only_function_call<_Rx(_Types...) & noexcept> : public _Move_only_function_base<_Rx, true, _Types...> { public: - using result_type = _Rx; - template using _VtInvQuals = _Vt&; @@ -1851,8 +1837,6 @@ public: template class _Move_only_function_call<_Rx(_Types...) && noexcept> : public _Move_only_function_base<_Rx, true, _Types...> { public: - using result_type = _Rx; - template using _VtInvQuals = _Vt&&; @@ -1867,8 +1851,6 @@ public: template class _Move_only_function_call<_Rx(_Types...) const noexcept> : public _Move_only_function_base<_Rx, true, _Types...> { public: - using result_type = _Rx; - template using _VtInvQuals = const _Vt&; @@ -1885,8 +1867,6 @@ template class _Move_only_function_call<_Rx(_Types...) const & noexcept> : public _Move_only_function_base<_Rx, true, _Types...> { public: - using result_type = _Rx; - template using _VtInvQuals = const _Vt&; @@ -1902,8 +1882,6 @@ template class _Move_only_function_call<_Rx(_Types...) const && noexcept> : public _Move_only_function_base<_Rx, true, _Types...> { public: - using result_type = _Rx; - template using _VtInvQuals = const _Vt&&; diff --git a/tools/scripts/move_only_function_specializations.py b/tools/scripts/move_only_function_specializations.py index 74ccbaa7475..548bf51486b 100644 --- a/tools/scripts/move_only_function_specializations.py +++ b/tools/scripts/move_only_function_specializations.py @@ -8,8 +8,6 @@ def specialization(cv: str, ref: str, ref_inv: str, noex: str, noex_val: str, ca class _Move_only_function_call<_Rx(_Types...) {cv} {ref} {noex}> : public _Move_only_function_base<_Rx, {noex_val}, _Types...> {{ public: - using result_type = _Rx; - template using _VtInvQuals = {cv} _Vt {ref_inv}; @@ -39,4 +37,4 @@ def cvref_permutations(noex: str, noex_val: str, trait: str) -> str: print(cvref_permutations("", "false", "is_invocable_r_v") + "\n" \ + "#ifdef __cpp_noexcept_function_type" + "\n" \ + cvref_permutations("noexcept", "true", "is_nothrow_invocable_r_v") \ - + "#endif // __cpp_noexcept_function_type") + + "#endif // defined(__cpp_noexcept_function_type)")