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 回答