diff --git a/include/stdexec/__detail/__any.hpp b/include/stdexec/__detail/__any.hpp index ad49b0425..0c480a846 100644 --- a/include/stdexec/__detail/__any.hpp +++ b/include/stdexec/__detail/__any.hpp @@ -455,31 +455,10 @@ namespace STDEXEC::__any } private: + STDEXEC_ATTRIBUTE(no_unique_address) _Value __val_; }; - // A specialization of __box to take advantage of EBO (empty base optimization): - template - requires std::is_empty_v<_Value> && (!std::is_final_v<_Value>) - struct STDEXEC_ATTRIBUTE(empty_bases) __box<_Value> : private _Value - { - constexpr explicit __box(_Value __value) noexcept - : _Value(std::move(__value)) - {} - - template - constexpr explicit __box(_Args &&...__args) noexcept - : _Value(static_cast<_Args &&>(__args)...) - {} - - template - [[nodiscard]] - static constexpr auto __value_(_Self &&__self) noexcept -> auto && - { - return std::forward<__copy_cvref_t<_Self, _Value>>(__self); - } - }; - template concept __has_box_kind = std::remove_reference_t<_Interface>::__box_kind == _BoxKind; @@ -1790,6 +1769,7 @@ namespace STDEXEC::__any } private: + using __model_type = __reference_proxy_model<_Interface>; static_assert(sizeof(__iabstract<_Interface>) == sizeof(void *)); // sanity check template