boost :: any会保存副本或引用/指针吗?

时间:2012-06-21 16:34:36

标签: c++ boost boost-any

以下代码是否安全?

boost::any any_value;

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

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

2 个答案:

答案 0 :(得分:5)

来自Boost.Any docs:

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

制作rhs的副本,丢弃以前的内容,以便新的   rhs的类型和值都相同。

所以是的,这样做是安全的。存储字符串的副本,而不是对它的引用。

答案 1 :(得分:1)

是的。假设类型符合boost::any概念,Copyable通过复制它来获取所有内容。