![]() |
Home | Libraries | People | FAQ | More |
boost::anys::basic_any — A class with customizable Small Object Optimization whose instances can hold instances of any type that satisfies ValueType requirements. Use boost::any instead if not sure.
// In header: <boost/any/basic_any.hpp> template< OptimizeForSize, OptimizeForAlignment> class basic_any { public: // construct/copy/destruct () ; template<typename ValueType> (); (basic_any &); (basic_any &&) ; template<typename ValueType> (, basic_any &, = , = ); basic_any & (basic_any &); basic_any & (basic_any &&) ; template<typename ValueType> basic_any & (); ~(); // public member functions basic_any & (basic_any &) ; () ; () ; () ; // public data members static buffer_size; static buffer_align; };
boost::anys::basic_any is the drop-in replacement for boost::any that provides control over Small Object Optimization via OptimizeForSize
and OptimizeForAlignment
template parameters.
There are certain applications that require boost::any functionality, do know the typical/maximal size of the stored object and wish to avoid dynamic memory allocation overhead. For the convenience such applications may create a typedef for boost::anys::basic_any with the OptimizeForSize
and OptimizeForAlignment
template parameters set to typical/maximal size and alignment of types respectively. Memory allocation would be avoided for storing nothrow move constructible types with size and alignment less than or equal to the OptimizeForSize
and OptimizeForAlignment
values.
Otherwise just use boost::any.
basic_any
public
construct/copy/destruct() ;
Postconditions: |
this->empty() is true. |
template<typename ValueType> ( value);
Makes a copy of value
, so that the initial content of the new instance is equivalent in both type and value to value
.
Does not dynamically allocate if ValueType
is nothrow move constructible and sizeof(value) <= OptimizeForSize
and alignof(value) <= OptimizeForAlignment
.
Throws: |
std::bad_alloc or any exceptions arising from the copy constructor of the contained type. |
(basic_any & other);
Copy constructor that copies content of other
into new instance, so that any content is equivalent in both type and value to the content of other
, or empty if other
is empty.
Throws: |
May fail with a std::bad_alloc exception or any exceptions arising from the copy constructor of the contained type. |
(basic_any && other) ;
Move constructor that moves content of other
into new instance and leaves other
empty.
Requires: |
C++11 compatible compiler |
Postconditions: |
other->empty() is true |
Throws: |
Nothing. |
template<typename ValueType> ( value, basic_any &, = , = );
Forwards value
, so that the initial content of the new instance is equivalent in both type and value to value
before the forward.
Does not dynamically allocate if ValueType
is nothrow move constructible and sizeof(value) <= OptimizeForSize
and alignof(value) <= OptimizeForAlignment
.
Requires: |
C++11 compatible compiler. |
Throws: |
std::bad_alloc or any exceptions arising from the move or copy constructor of the contained type. |
basic_any & (basic_any & rhs);
Copies content of rhs
into current instance, discarding previous content, so that the new content is equivalent in both type and value to the content of rhs
, or empty if rhs.empty()
.
Throws: |
std::bad_alloc or any exceptions arising from the copy constructor of the contained type. Assignment satisfies the strong guarantee of exception safety. |
basic_any & (basic_any && rhs) ;
Moves content of rhs
into current instance, discarding previous content, so that the new content is equivalent in both type and value to the content of rhs
before move, or empty if rhs.empty()
.
Requires: |
C++11 compatible compiler. |
Postconditions: |
|
Throws: |
Nothing. |
template<typename ValueType> basic_any & ( rhs);
Forwards rhs
, discarding previous content, so that the new content of is equivalent in both type and value to rhs
before forward.
Does not dynamically allocate if ValueType
is nothrow move constructible and sizeof(value) <= OptimizeForSize
and alignof(value) <= OptimizeForAlignment
.
Requires: |
C++11 compatible compiler. |
Throws: |
std::bad_alloc or any exceptions arising from the move or copy constructor of the contained type. Assignment satisfies the strong guarantee of exception safety. |
~();
Releases any and all resources used in management of instance.
Throws: |
Nothing. |
basic_any
public member functionsbasic_any & (basic_any & rhs) ;
Exchange of the contents of *this
and rhs
.
Returns: |
|
Throws: |
Nothing. |
() ;
Returns: |
|
Throws: |
Nothing. |
() ;
Postconditions: |
this->empty() is true |
() ;
Useful for querying against types known either at compile time or only at runtime.
Returns: |
the |