以下代码是否安全?
boost::any any_value;
{
std::string s = "HelloWorld";
any_value = s;
}
std::string ss = any_cast<std::string>(any_value);
答案 0 :(得分:5)
来自Boost.Any docs:
template<typename ValueType> any & operator=(const ValueType & rhs);
制作rhs的副本,丢弃以前的内容,以便新的 rhs的类型和值都相同。
所以是的,这样做是安全的。存储字符串的副本,而不是对它的引用。
答案 1 :(得分:1)
是的。假设类型符合boost::any
概念,Copyable
通过复制它来获取所有内容。