22 template <
typename T,
typename... Args>
23 constexpr auto size(
const T&, Args&&... ) noexcept {
24 static_assert(
sizeof...( Args ) == 0,
"No extra args please" );
31 virtual std::optional<std::size_t>
size()
const = 0;
35 std::type_index
m_type =
typeid( void );
41 operator void const*()
const {
return m_ptr; }
45 T
const*
get()
const {
46 if ( std::is_void_v<T> ||
m_type == std::type_index(
typeid( T ) ) )
return static_cast<T const*
>(
m_ptr );
47 struct bad_AnyDataWrapper_Ptr_cast : std::bad_cast {};
48 throw bad_AnyDataWrapper_Ptr_cast{};
69 std::optional<std::size_t>
size()
const override {
77template <
typename ViewType,
typename OwnedType>
AnyDataWithViewWrapper & operator=(AnyDataWithViewWrapper const &)=delete
AnyDataWithViewWrapper(AnyDataWithViewWrapper const &)=delete
AnyDataWithViewWrapper & operator=(AnyDataWithViewWrapper &&)=delete
AnyDataWithViewWrapper(OwnedType &&data)
AnyDataWithViewWrapper(AnyDataWithViewWrapper &&)=delete
std::type_index type() const
AnyDataWrapper(AnyDataWrapper const &)=delete
AnyDataWrapper & operator=(AnyDataWrapper &&)=delete
Ptr payload() const override
const T & getData() const
std::optional< std::size_t > size() const override
AnyDataWrapper & operator=(AnyDataWrapper const &)=delete
AnyDataWrapper(AnyDataWrapper &&)=delete
DataObject()
Standard Constructor.
constexpr auto size(const T &, Args &&...) noexcept
virtual std::optional< std::size_t > size() const =0
virtual Ptr payload() const =0