次のコードは安全ですか?
boost::any any_value;
{
std::string s = "HelloWorld";
any_value = s;
}
std::string ss = any_cast<std::string>(any_value);
Boost.Anyドキュメントから:
template<typename ValueType> any & operator=(const ValueType & rhs);
rhs のコピーを作成し、以前の内容を破棄して、新しい内容が型と値の両方で rhs と同等になるようにします。
そうです、そうしても安全です。文字列への参照ではなく、文字列のコピーが保存されます。
はい、そうです。型が概念boost::any
を満たしていると仮定して、そのコピーを作成することですべてを取ります。Copyable