C++ 参考手册

位置:首页 > C++ 参考手册 >C++ 标准库头文件 > 标准库头文件 <any>

此头文件是通用工具库的一部分。

 
名称 描述
(C++17 起)
可保有任何可复制构造 (CopyConstructible) 类型的实例的对象。
(类)
当类型不匹配时按值返回形式的 any_cast 所抛出的异常
(类)

函数

特化 std::swap 算法
(函数)
(C++17)
对被容纳对象的类型安全访问
(函数模板)

概要

namespace std {
  // 类 bad_any_cast
  class bad_any_cast;
  // 类 any
  class any;
  // 非成员函数
  void swap(any& x, any& y) noexcept;
  template <class T, class... Args>
  any make_any(Args&& ...args);
  template <class T, class U, class... Args>
  any make_any(initializer_list<U> il, Args&& ...args);
  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;
}

std::bad_any_cast

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

std::any

class any {
public:
  // 构造和销毁
  constexpr any() noexcept;
  any(const any& other);
  any(any&& other) noexcept;
  template <class ValueType> any(ValueType&& value);
  template <class ValueType, class... Args>
  explicit any(in_place_type_t<ValueType>, Args&&...);
  template <class ValueType, class U, class... Args>
  explicit any(in_place_type_t<ValueType>, initializer_list<U>, Args&&...);
  ~any();
  // 赋值
  any& operator=(const any& rhs);
  any& operator=(any&& rhs) noexcept;
  template <class ValueType> any& operator=(ValueType&& rhs);
  // 修改器
  template <class ValueType, class... Args>
  void emplace(Args&& ...);
  template <class ValueType, class U, class... Args>
  void emplace(initializer_list<U>, Args&&...);
  void reset() noexcept;
  void swap(any& rhs) noexcept;
  // 观察器
  bool has_value() const noexcept;
  const type_info& type() const noexcept;
};