1

boost::any のテンプレート コピー コンストラクター

ブーストの 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-constructor が役立つことは明らかです。しかし、最初のコピー構築が実行されるのはいつですか?

4

1 に答える 1

2

テンプレート コンストラクター (コピー コンストラクターではない) は、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.
于 2015-11-12T14:28:22.493 に答える