1

次のコードは安全ですか?

boost::any any_value;

{
    std::string s = "HelloWorld";
    any_value = s;
}

std::string ss = any_cast<std::string>(any_value);
4

2 に答える 2

5

Boost.Anyドキュメントから:

template<typename ValueType> any & operator=(const ValueType & rhs);

rhs のコピーを作成し、以前の内容を破棄して、新しい内容が型と値の両方で rhs と同等になるようにします。

そうです、そうしても安全です。文字列への参照ではなく、文字列のコピーが保存されます。

于 2012-06-21T16:39:11.763 に答える
1

はい、そうです。型が概念boost::anyを満たしていると仮定して、そのコピーを作成することですべてを取ります。Copyable

于 2012-06-21T16:38:43.453 に答える