constexpr any() noexcept;
any(const any& other);
Effects: Если other.has_value() есть false, создает объект, не имеющий значения. В противном случае эквивалентно any(in_place<T>, any_cast<const T&>(other)) где T - тип содержащегося объекта.
Throws: Любые исключения, возникающие при вызове выбранного конструктора для содержащегося значения.
any(any&& other) noexcept;
Effects: Если other.has_value() есть false, создает объект, не имеющий значения. В противном случае создает объект типа, any который содержит либо содержащийся объект other, либо содержит объект того же типа, созданный из содержащегося объекта, other рассматривая этот содержащийся объект как rvalue.
template<class T>
any(T&& value);
Effects: Создает объект типа, any который содержит объект типа, VT инициализированный напрямую с помощью std::forward<T>(value).
Remarks: Этот конструктор не должен участвовать в разрешении перегрузки, если VT он не относится к тому же типу, что и any, VT не является специализацией in_place_type_tи не is_copy_constructible_v<VT> является true.
template <class T, class... Args>
explicit any(in_place_type_t<T>, Args&&... args);
Effects: Инициализирует содержащееся значение, как если бы инициализирует объект типа напрямую без использования списка VT с аргументами std::forward<Args>(args)....
Remarks: Этот конструктор не должен участвовать в разрешении перегрузки , если is_copy_constructible_v<VT> не true и is_constructible_v<VT, Args...> является true.
template <class T, class U, class... Args>
explicit any(in_place_type_t<T>, initializer_list<U> il, Args&&... args);
Effects: Инициализирует содержащееся значение, как если бы инициализирует объект типа напрямую без использования списка VT с аргументами il, std::forward<Args>(args)....
Remarks: Этот конструктор не должен участвовать в разрешении перегрузки , если is_copy_constructible_v<VT> не true и is_constructible_v<VT, initializer_list<U>&, Args...> является true.
~any();