◐ Shell
clean mode source ↗

std::any::any - cppreference.com

constexpr any() noexcept;
(1) (desde C++17)
any( const any& other );
(2) (desde C++17)
any( any&& other ) noexcept;
(3) (desde C++17)
template< typename ValueType >
any( ValueType&& value );
(4) (desde C++17)
template< typename ValueType, typename... Args >
explicit any( std::in_place_type_t<ValueType>, Args&&... args );
(5) (desde C++17)
template< typename ValueType, typename U, typename... Args >
explicit any( std::in_place_type_t<ValueType>, std::initializer_list<U> il,
              Args&&... args );
(6) (desde C++17)

Construye un nuevo objeto any.

1) Construye un objeto vacío.

2-3) Copia (2) o mueve (3) el contenido de other a una nueva instancia, de tal manera que cualquier contenido es equivalente tanto en tipo como en valor a aquel de other antes de la llamada al contructor, o vacío si other está vacío. Formalmente,

2) Si other está vacío, el objeto construido está vacío. De otra forma, el equivalente a any(std::in_place_type<T>, std::any_cast<const T&>(other)), donde T es el tipo del objeto contenido en other.

3) Si other está vacío, el objeto construido está vacío. De otra forma, el objeto construido contiene ya sea el objeto contenido en other, o un objeto del mismo tipo construido a partir del objeto contenido en other, considerando ese objeto como un rvalue.

4) Construye un objeto con contenido inicial, un objeto de tipo std::decay_t<ValueType>, inicializado directamente a partir de std::forward<ValueType>(value). Si std::is_copy_constructible<std::decay_t<ValueType>>::value es false, el programa está mal formado. Esta sobrecarga solo participa en la resolución de sobrecargas si std::decay_t<ValueType> no es del mismo tipo que any ni una especialización de std::in_place_type_t, y std::is_copy_constructible_v<std::decay_t<ValueType>> es true.

5) Construye un objeto con contenido inicial, un objeto de tipo std::decay_t<ValueType>, inicializado directamente sin inicialización de lista a partir de std::forward<Args>(args).... Esta sobrecarga solo participa en la resolución de sobrecargas si std::is_constructible_v<std::decay_t<ValueType>, Args...> y std::is_copy_constructible_v<std::decay_t<ValueType>> son ambos true.

6) Construye un objeto con contenido inicial, un objeto de tipo std::decay_t<ValueType>, inicializado directamente sin inicialización de lista a partir de il, std::forward<Args>(args).... Esta sobrecarga solo participa en la resolución de sobrecargas si std::is_constructible_v<std::decay_t<ValueType>, std::initializer_list<U>&, Args...> y std::is_copy_constructible_v<std::decay_t<ValueType>> son ambos true.

Parámetros de plantilla

ValueType - Tipo del valor contenido
Requisitos de tipo
-std::decay_t<ValueType> debe satisfacer los requisitos de CopyConstructible.

Parámetros

other - Otro objeto any para copiar o mover a partir de él
value - Valor con el cual inicializar el valor contenido
il, args - Argumentos para pasar al constructor del objeto contenido

Excepciones

2,4,5,6) Lanzan cualquier excepción lanzada por el constructor del tipo contenido.

Notas

Como el constructor por defecto es constexpr, objetos std::any estáticos se inicializan como parte de la inicialización estática no local, antes que inicie cualquier inicialización no local. Esto lo hace seguro para usar como un objeto de tipo std::any en un constructor de cualquier objeto estático.

Véase también