下面的代码安全吗?
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
概念,则通过对其进行复制来获取所有内容。