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.