EnTT 3.16.0
Loading...
Searching...
No Matches
entt::basic_any< Len, Align > Class Template Reference

A SBO friendly, type-safe container for single values of any type. More...

#include <any.hpp>

Inheritance diagram for entt::basic_any< Len, Align >:
Collaboration diagram for entt::basic_any< Len, Align >:

Public Member Functions

constexpr basic_any () noexcept
 Default constructor.
template<typename Type, typename... Args>
 basic_any (std::in_place_type_t< Type >, Args &&...args)
 Constructs a wrapper by directly initializing the new object.
template<typename Type>
 basic_any (std::in_place_t, Type *value)
 Constructs a wrapper taking ownership of the passed object.
template<typename Type, typename = std::enable_if_t<!std::is_same_v<std::decay_t<Type>, basic_any>>>
 basic_any (Type &&value)
 Constructs a wrapper from a given value.
 basic_any (const basic_any &other)
 Copy constructor.
 basic_any (basic_any &&other) noexcept
 Move constructor.
 ~basic_any ()
 Frees the internal buffer, whatever it means.
basic_anyoperator= (const basic_any &other)
 Copy assignment operator.
basic_anyoperator= (basic_any &&other) noexcept
 Move assignment operator.
template<typename Type, typename = std::enable_if_t<!std::is_same_v<std::decay_t<Type>, basic_any>>>
basic_anyoperator= (Type &&value)
 Value assignment operator.
bool has_value () const noexcept
 Returns false if a wrapper is empty, true otherwise.
bool has_value (const type_info &req) const noexcept
 Returns false if the wrapper does not contain the expected type, true otherwise.
template<typename Type>
bool has_value () const noexcept
 Returns false if the wrapper does not contain the expected type, true otherwise.
const type_infoinfo () const noexcept
 Returns the object type info if any, type_id<void>() otherwise.
const type_infotype () const noexcept
 Returns the object type info if any, type_id<void>() otherwise.
const void * data () const noexcept
 Returns an opaque pointer to the contained instance.
const void * data (const type_info &req) const noexcept
 Returns an opaque pointer to the contained instance.
template<typename Type>
const Type * data () const noexcept
 Returns an opaque pointer to the contained instance.
void * data () noexcept
 Returns an opaque pointer to the contained instance.
void * data (const type_info &req) noexcept
 Returns an opaque pointer to the contained instance.
template<typename Type>
Type * data () noexcept
 Returns an opaque pointer to the contained instance.
template<typename Type, typename... Args>
void emplace (Args &&...args)
 Replaces the contained object by creating a new instance directly.
bool assign (const basic_any &other)
 Assigns a value to the contained object without replacing it.
bool assign (basic_any &&other)
 Assigns a value to the contained object without replacing it.
void reset ()
 Destroys contained object.
 operator bool () const noexcept
 Returns false if a wrapper is empty, true otherwise.
bool operator== (const basic_any &other) const noexcept
 Checks if two wrappers differ in their content.
bool operator!= (const basic_any &other) const noexcept
 Checks if two wrappers differ in their content.
basic_any as_ref () noexcept
 Aliasing constructor.
basic_any as_ref () const noexcept
 Aliasing constructor.
bool owner () const noexcept
 Returns true if a wrapper owns its object, false otherwise.
any_policy policy () const noexcept
 Returns the current mode of an any object.

Static Public Attributes

static constexpr auto length = Len
 Size of the internal buffer.
static constexpr auto alignment = Align
 Alignment requirement.

Detailed Description

template<std::size_t Len, std::size_t Align>
class entt::basic_any< Len, Align >

A SBO friendly, type-safe container for single values of any type.

Template Parameters
LenSize of the buffer reserved for the small buffer optimization.
AlignOptional alignment requirement.

Definition at line 60 of file any.hpp.

Constructor & Destructor Documentation

◆ basic_any() [1/6]

template<std::size_t Len, std::size_t Align>
entt::basic_any< Len, Align >::basic_any ( )
inlineconstexprnoexcept

Default constructor.

Definition at line 188 of file any.hpp.

◆ basic_any() [2/6]

template<std::size_t Len, std::size_t Align>
template<typename Type, typename... Args>
entt::basic_any< Len, Align >::basic_any ( std::in_place_type_t< Type > ,
Args &&... args )
inlineexplicit

Constructs a wrapper by directly initializing the new object.

Template Parameters
TypeType of object to use to initialize the wrapper.
ArgsTypes of arguments to use to construct the new instance.
Parameters
argsParameters to use to construct the instance.

Definition at line 198 of file any.hpp.

◆ basic_any() [3/6]

template<std::size_t Len, std::size_t Align>
template<typename Type>
entt::basic_any< Len, Align >::basic_any ( std::in_place_t ,
Type * value )
inlineexplicit

Constructs a wrapper taking ownership of the passed object.

Template Parameters
TypeType of object to use to initialize the wrapper.
Parameters
valueA pointer to an object to take ownership of.

Definition at line 209 of file any.hpp.

◆ basic_any() [4/6]

template<std::size_t Len, std::size_t Align>
template<typename Type, typename = std::enable_if_t<!std::is_same_v<std::decay_t<Type>, basic_any>>>
entt::basic_any< Len, Align >::basic_any ( Type && value)
inline

Constructs a wrapper from a given value.

Template Parameters
TypeType of object to use to initialize the wrapper.
Parameters
valueAn instance of an object to use to initialize the wrapper.

Definition at line 228 of file any.hpp.

◆ basic_any() [5/6]

template<std::size_t Len, std::size_t Align>
entt::basic_any< Len, Align >::basic_any ( const basic_any< Len, Align > & other)
inline

Copy constructor.

Parameters
otherThe instance to copy from.

Definition at line 235 of file any.hpp.

◆ basic_any() [6/6]

template<std::size_t Len, std::size_t Align>
entt::basic_any< Len, Align >::basic_any ( basic_any< Len, Align > && other)
inlinenoexcept

Move constructor.

Parameters
otherThe instance to move from.

Definition at line 244 of file any.hpp.

◆ ~basic_any()

template<std::size_t Len, std::size_t Align>
entt::basic_any< Len, Align >::~basic_any ( )
inline

Frees the internal buffer, whatever it means.

Definition at line 258 of file any.hpp.

Member Function Documentation

◆ as_ref() [1/2]

template<std::size_t Len, std::size_t Align>
basic_any entt::basic_any< Len, Align >::as_ref ( ) const
inlinenodiscardnoexcept

Aliasing constructor.

Returns
A wrapper that shares a reference to an unmanaged object.

Definition at line 506 of file any.hpp.

◆ as_ref() [2/2]

template<std::size_t Len, std::size_t Align>
basic_any entt::basic_any< Len, Align >::as_ref ( )
inlinenodiscardnoexcept

Aliasing constructor.

Returns
A wrapper that shares a reference to an unmanaged object.

Definition at line 499 of file any.hpp.

◆ assign() [1/2]

template<std::size_t Len, std::size_t Align>
bool entt::basic_any< Len, Align >::assign ( basic_any< Len, Align > && other)
inline

Assigns a value to the contained object without replacing it.

Parameters
otherThe value to assign to the contained object.
Returns
True in case of success, false otherwise.

Definition at line 451 of file any.hpp.

◆ assign() [2/2]

template<std::size_t Len, std::size_t Align>
bool entt::basic_any< Len, Align >::assign ( const basic_any< Len, Align > & other)
inline

Assigns a value to the contained object without replacing it.

Parameters
otherThe value to assign to the contained object.
Returns
True in case of success, false otherwise.

Definition at line 441 of file any.hpp.

◆ data() [1/6]

template<std::size_t Len, std::size_t Align>
template<typename Type>
const Type * entt::basic_any< Len, Align >::data ( ) const
inlinenodiscardnoexcept

Returns an opaque pointer to the contained instance.

Template Parameters
TypeExpected type.
Returns
An opaque pointer the contained instance, if any.

Definition at line 389 of file any.hpp.

◆ data() [2/6]

template<std::size_t Len, std::size_t Align>
const void * entt::basic_any< Len, Align >::data ( ) const
inlinenodiscardnoexcept

Returns an opaque pointer to the contained instance.

Returns
An opaque pointer the contained instance, if any.

Definition at line 366 of file any.hpp.

◆ data() [3/6]

template<std::size_t Len, std::size_t Align>
template<typename Type>
Type * entt::basic_any< Len, Align >::data ( )
inlinenodiscardnoexcept

Returns an opaque pointer to the contained instance.

Template Parameters
TypeExpected type.
Returns
An opaque pointer the contained instance, if any.

Definition at line 416 of file any.hpp.

◆ data() [4/6]

template<std::size_t Len, std::size_t Align>
void * entt::basic_any< Len, Align >::data ( )
inlinenodiscardnoexcept

Returns an opaque pointer to the contained instance.

Returns
An opaque pointer the contained instance, if any.

Definition at line 397 of file any.hpp.

◆ data() [5/6]

template<std::size_t Len, std::size_t Align>
const void * entt::basic_any< Len, Align >::data ( const type_info & req) const
inlinenodiscardnoexcept

Returns an opaque pointer to the contained instance.

Parameters
reqExpected type.
Returns
An opaque pointer the contained instance, if any.

Definition at line 379 of file any.hpp.

◆ data() [6/6]

template<std::size_t Len, std::size_t Align>
void * entt::basic_any< Len, Align >::data ( const type_info & req)
inlinenodiscardnoexcept

Returns an opaque pointer to the contained instance.

Parameters
reqExpected type.
Returns
An opaque pointer the contained instance, if any.

Definition at line 406 of file any.hpp.

◆ emplace()

template<std::size_t Len, std::size_t Align>
template<typename Type, typename... Args>
void entt::basic_any< Len, Align >::emplace ( Args &&... args)
inline

Replaces the contained object by creating a new instance directly.

Template Parameters
TypeType of object to use to initialize the wrapper.
ArgsTypes of arguments to use to construct the new instance.
Parameters
argsParameters to use to construct the instance.

Definition at line 431 of file any.hpp.

◆ has_value() [1/3]

template<std::size_t Len, std::size_t Align>
template<typename Type>
bool entt::basic_any< Len, Align >::has_value ( ) const
inlinenodiscardnoexcept

Returns false if the wrapper does not contain the expected type, true otherwise.

Template Parameters
TypeExpected type.
Returns
False if the wrapper does not contain the expected type, true otherwise.

Definition at line 344 of file any.hpp.

◆ has_value() [2/3]

template<std::size_t Len, std::size_t Align>
bool entt::basic_any< Len, Align >::has_value ( ) const
inlinenodiscardnoexcept

Returns false if a wrapper is empty, true otherwise.

Returns
False if the wrapper is empty, true otherwise.

Definition at line 321 of file any.hpp.

◆ has_value() [3/3]

template<std::size_t Len, std::size_t Align>
bool entt::basic_any< Len, Align >::has_value ( const type_info & req) const
inlinenodiscardnoexcept

Returns false if the wrapper does not contain the expected type, true otherwise.

Parameters
reqExpected type.
Returns
False if the wrapper does not contain the expected type, true otherwise.

Definition at line 332 of file any.hpp.

◆ info()

template<std::size_t Len, std::size_t Align>
const type_info & entt::basic_any< Len, Align >::info ( ) const
inlinenodiscardnoexcept

Returns the object type info if any, type_id<void>() otherwise.

Returns
The object type info if any, type_id<void>() otherwise.

Definition at line 353 of file any.hpp.

◆ operator bool()

template<std::size_t Len, std::size_t Align>
entt::basic_any< Len, Align >::operator bool ( ) const
inlineexplicitnodiscardnoexcept

Returns false if a wrapper is empty, true otherwise.

Returns
False if the wrapper is empty, true otherwise.

Definition at line 469 of file any.hpp.

◆ operator!=()

template<std::size_t Len, std::size_t Align>
bool entt::basic_any< Len, Align >::operator!= ( const basic_any< Len, Align > & other) const
inlinenodiscardnoexcept

Checks if two wrappers differ in their content.

Parameters
otherWrapper with which to compare.
Returns
True if the two objects differ in their content, false otherwise.

Definition at line 491 of file any.hpp.

◆ operator=() [1/3]

template<std::size_t Len, std::size_t Align>
basic_any & entt::basic_any< Len, Align >::operator= ( basic_any< Len, Align > && other)
inlinenoexcept

Move assignment operator.

Parameters
otherThe instance to move from.
Returns
This any object.

Definition at line 286 of file any.hpp.

◆ operator=() [2/3]

template<std::size_t Len, std::size_t Align>
basic_any & entt::basic_any< Len, Align >::operator= ( const basic_any< Len, Align > & other)
inline

Copy assignment operator.

Parameters
otherThe instance to copy from.
Returns
This any object.

Definition at line 267 of file any.hpp.

◆ operator=() [3/3]

template<std::size_t Len, std::size_t Align>
template<typename Type, typename = std::enable_if_t<!std::is_same_v<std::decay_t<Type>, basic_any>>>
basic_any & entt::basic_any< Len, Align >::operator= ( Type && value)
inline

Value assignment operator.

Template Parameters
TypeType of object to use to initialize the wrapper.
Parameters
valueAn instance of an object to use to initialize the wrapper.
Returns
This any object.

Definition at line 312 of file any.hpp.

◆ operator==()

template<std::size_t Len, std::size_t Align>
bool entt::basic_any< Len, Align >::operator== ( const basic_any< Len, Align > & other) const
inlinenodiscardnoexcept

Checks if two wrappers differ in their content.

Parameters
otherWrapper with which to compare.
Returns
False if the two objects differ in their content, true otherwise.

Definition at line 478 of file any.hpp.

◆ owner()

template<std::size_t Len, std::size_t Align>
bool entt::basic_any< Len, Align >::owner ( ) const
inlinenodiscardnoexcept

Returns true if a wrapper owns its object, false otherwise.

Returns
True if the wrapper owns its object, false otherwise.

Definition at line 519 of file any.hpp.

◆ policy()

template<std::size_t Len, std::size_t Align>
any_policy entt::basic_any< Len, Align >::policy ( ) const
inlinenodiscardnoexcept

Returns the current mode of an any object.

Returns
The current mode of the any object.

Definition at line 527 of file any.hpp.

◆ reset()

template<std::size_t Len, std::size_t Align>
void entt::basic_any< Len, Align >::reset ( )
inline

Destroys contained object.

Definition at line 460 of file any.hpp.

◆ type()

template<std::size_t Len, std::size_t Align>
const type_info & entt::basic_any< Len, Align >::type ( ) const
inlinenodiscardnoexcept

Returns the object type info if any, type_id<void>() otherwise.

Returns
The object type info if any, type_id<void>() otherwise.

Definition at line 358 of file any.hpp.

Member Data Documentation

◆ alignment

template<std::size_t Len, std::size_t Align>
auto entt::basic_any< Len, Align >::alignment = Align
staticconstexpr

Alignment requirement.

Definition at line 185 of file any.hpp.

◆ length

template<std::size_t Len, std::size_t Align>
auto entt::basic_any< Len, Align >::length = Len
staticconstexpr

Size of the internal buffer.

Definition at line 183 of file any.hpp.


The documentation for this class was generated from the following file: