c++ - boost::any 中的模板复制构造函数

标签 c++ boost-any

boost::any 中的模板复制构造函数

我对 boost 的 any.hpp 中的这些代码感到困惑。

    template<typename ValueType>
    any(const ValueType & value)
      : content(new holder<
            BOOST_DEDUCED_TYPENAME remove_cv<BOOST_DEDUCED_TYPENAME decay<const ValueType>::type>::type
        >(value))
    {   
    }

    any(const any & other)
      : content(other.content ? other.content->clone() : 0)
    { 
    }

很明显,当我需要来自另一个对象的新对象时,sencod 复制构造函数很有用。 但是第一个copy-constructed什么时候执行呢?

最佳答案

模板构造函数(不是复制构造函数)从对 ValueType 的某个对象的 const 引用构造一个 boost::any。复制构造函数制作 any 的拷贝(对其中的对象执行多态克隆)。

这是第一个表单何时被选中的示例:

std::string s = "Hello, World";
boost::any a(s);  // template constructor selected here

boost::any b(a);  // copy constructor selected here.

关于c++ - boost::any 中的模板复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33667870/

相关文章:

C++ 取消分配 2d int 数组错误

c++ - 告诉编译器我希望变量始终存储在寄存器中的正确方法是什么?

c++ - 返回不同类型变量的单个 get 方法

c++ - boost::any_cast(const any&) 使用 const_cast<>——这不是潜在的 UB 吗?

c++ - Boost::any 和多态性

c++ - 一个类的成员可以被命名为与其类型(另一个类)相同的名称吗?

c++ - 访问自定义 2-dim C++ 容器元素的最佳方法

Qt Creator 中函数的 C++ 注释

c++ - 更好地处理 boost::program_options 中丢失/错误的键

c++ - C++11 标准是否提供类似 boost::any 的东西?