boost::any中的模板副本构造函数

我在boost.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-constructor很有用。
但是什么时候第一个复制构造将被执行?

最佳答案

模板构造函数(不是副本构造函数)从对boost::any的某个对象的const引用构造ValueType。复制构造函数复制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/

10-16 04:17