libstdc++: Type-safe container of any type

libstdc++

Type-safe container of any type
Technical Specifications » Library Fundamentals TS
Collaboration diagram for Type-safe container of any type:

## Classes
class | std::experimental::fundamentals_v1::any
class | std::experimental::fundamentals_v1::bad_any_cast

## Macros
#define | __cpp_lib_experimental_any

## Functions
static void | std::experimental::fundamentals_v1::any::_Manager_external< _Tp >::_S_manage (_Op __which, const any *__anyp, _Arg *__arg)
static void | std::experimental::fundamentals_v1::any::_Manager_internal< _Tp >::_S_manage (_Op __which, const any *__anyp, _Arg *__arg)
template<typename _ValueType>
_ValueType | std::experimental::any_cast (const any &__any)
void | std::experimental::swap (any &__x, any &__y) noexcept
template<typename _ValueType>
_ValueType | std::experimental::any_cast (any &__any)
template<typename _ValueType, typename enable_if<!is_move_constructible< _ValueType >::value||is_lvalue_reference< _ValueType >::value, bool >::type = true>
_ValueType | std::experimental::any_cast (any &&__any)
template<typename _ValueType>
const _ValueType * | std::experimental::any_cast (const any *__any) noexcept
template<typename _ValueType>
_ValueType * | std::experimental::any_cast (any *__any) noexcept

## Detailed Description

A type-safe container for single values of value types, as described in n3804 "Any Library Proposal (Revision 3)".

## Macro Definition Documentation

## ◆ __cpp_lib_experimental_any

#define __cpp_lib_experimental_any

Definition at line 65 of file experimental/any.

## Function Documentation

## ◆ _S_manage() [1/2]

template<typename _Tp>

void std::experimental::fundamentals_v1::any::_Manager_external< _Tp >::_S_manage | ( | _Op | __which,
|  | const any * | __anyp,
|  | _Arg * | __arg )
| static

Definition at line 524 of file experimental/any.

## ◆ _S_manage() [2/2]

template<typename _Tp>

void std::experimental::fundamentals_v1::any::_Manager_internal< _Tp >::_S_manage | ( | _Op | __which,
|  | const any * | __anyp,
|  | _Arg * | __arg )
| static

Definition at line 490 of file experimental/any.

## ◆ any_cast() [1/5]

template<typename _ValueType, typename enable_if<!is_move_constructible< _ValueType >::value||is_lvalue_reference< _ValueType >::value, bool >::type = true>

_ValueType std::experimental::fundamentals_v1::any_cast | ( | any && | __any | ) |
| inline

Access the contained object.

Template Parameters

  _ValueType | A reference or CopyConstructible type.

Parameters

  __any | The object to access.

Returns
  The contained object.

Exceptions

  bad_any_cast | If `__any.type() != typeid(remove_reference_t<_ValueType>)`

Definition at line 396 of file experimental/any.

References any_cast().

## ◆ any_cast() [2/5]

template<typename _ValueType>

_ValueType std::experimental::fundamentals_v1::any_cast | ( | any & | __any | ) |
| inline

Access the contained object.

Template Parameters

  _ValueType | A reference or CopyConstructible type.

Parameters

  __any | The object to access.

Returns
  The contained object.

Exceptions

  bad_any_cast | If `__any.type() != typeid(remove_reference_t<_ValueType>)`

Definition at line 382 of file experimental/any.

References any_cast().

## ◆ any_cast() [3/5]

template<typename _ValueType>

_ValueType * std::experimental::fundamentals_v1::any_cast | ( | any * | __any | ) |
| inlinenoexcept

Access the contained object.

Template Parameters

  _ValueType | The type of the contained object.

Parameters

  __any | A pointer to the object to access.

Returns
  The address of the contained object if `__any != nullptr && __any.type() == typeid(_ValueType)` , otherwise a null pointer.

Definition at line 480 of file experimental/any.

## ◆ any_cast() [4/5]

template<typename _ValueType>

_ValueType std::experimental::fundamentals_v1::any_cast | ( | const any & | __any | ) |
| inline

Access the contained object.

Template Parameters

  _ValueType | A const-reference or CopyConstructible type.

Parameters

  __any | The object to access.

Returns
  The contained object.

Exceptions

  bad_any_cast | If `__any.type() != typeid(remove_reference_t<_ValueType>)`

Definition at line 359 of file experimental/any.

References any_cast().

Referenced by any_cast(), any_cast(), and any_cast().

## ◆ any_cast() [5/5]

template<typename _ValueType>

const _ValueType * std::experimental::fundamentals_v1::any_cast | ( | const any * | __any | ) |
| inlinenoexcept

Access the contained object.

Template Parameters

  _ValueType | The type of the contained object.

Parameters

  __any | A pointer to the object to access.

Returns
  The address of the contained object if `__any != nullptr && __any.type() == typeid(_ValueType)` , otherwise a null pointer.

Definition at line 472 of file experimental/any.

## ◆ swap()

void std::experimental::fundamentals_v1::swap | ( | any & | __x,
|  | any & | __y )
| inlinenoexcept

Exchange the states of two `any` objects.

Definition at line 346 of file experimental/any.