# 实验性库头文件 <experimental/any>

< cpp‎ | header‎ | experimental

此头文件是库基础 TS (v1, v2) 的一部分。

### 类

名字 | 描述
bad_any_cast (库基础 TS) | 由失败的 `any_cast` 所抛出的异常。 (类)
any (库基础 TS) | 保有满足 `ValueType` 要求的任意类型的实例的对象。 (类)

### 函数

swap | 交换两个 `any` 实例 (函数)
any_cast | 对被容纳对象的类型安全访问 (函数模板)

### 概要

    namespace std {
    namespace experimental {
    inline namespace fundamentals_v1 {

      class bad_any_cast : public bad_cast
      {
      public:
        virtual const char* what() const noexcept;
      };

      class any
      {
      public:
        // 6.3.1，any 构造/析构
        any() noexcept;

        any(const any& other);
        any(any&& x) noexcept;

        template <class ValueType>
            any(ValueType&& value);

        ~any();

        // 6.3.2，any 赋值
        any& operator=(const any& rhs);
        any& operator=(any&& rhs) noexcept;

        template <class ValueType>
          any& operator=(ValueType&& rhs);

        // 6.3.3，any 修改函数
        void clear() noexcept;
        void swap(any& rhs) noexcept;

        // 6.3.4，any 探察函数
        bool empty() const noexcept;
        const type_info& type() const noexcept;
      };

      // 6.4，非成员函数
      void swap(any& x, any& y) noexcept;

      template<class ValueType>
        ValueType any_cast(const any& operand);
      template<class ValueType>
        ValueType any_cast(any& operand);
      template<class ValueType>
        ValueType any_cast(any&& operand);

      template<class ValueType>
        const ValueType* any_cast(const any* operand) noexcept;
      template<class ValueType>
        ValueType* any_cast(any* operand) noexcept;

    } // namespace fundamentals_v1
    } // namespace experimental
    } // namespace std