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

C++ boost::any中的模板复制构造函数,c++,boost-any,C++,Boost Any,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&g

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)
    { 
    }
模板
任意(常量值类型和值)
:内容(新支架)<
BOOST\u导出的\u类型名称删除\u cv::类型
>(价值)
{   
}
任何(常数任何和其他)
:content(other.content?other.content->clone():0)
{ 
}
很明显,对于sencod,当我需要一个来自另一个对象的新对象时,copy构造函数非常有用。 但何时将执行构造的第一个副本?

模板构造函数(不是副本构造函数)从对
值类型的某个对象的常量引用构造一个
boost::any
。复制构造函数复制any(在其中执行对象的多态克隆)

以下是选择第一个表单的时间示例:

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

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

你的“加号”钥匙坏了吗?看来你应该打两次?