boost :: any可移动吗?

时间:2013-08-10 19:43:21

标签: c++ boost boost-any

此代码编译但我不认为它符合我的意图,即移动,不要复制,在堆栈上创建的boost::any对象为std::vector<boost::any>

boost::any var;
var = std::string("StackOverflow");

std::vector<boost::any> vm;
vm.push_back(std::move(var));

for (auto& i : vm)
{
  std::cout << boost::any_cast<std::string>(i) << std::endl; // yes a copy exists 
}
std::cout << boost::any_cast<std::string>(var) << std::endl; // but this copy still exists too. was it not moved?? 

1 个答案:

答案 0 :(得分:3)

如果您查看boost/any.hpp并观察其源代码(至少找到 move 字),您会发现它完全是C ++ 11未知(不幸的是)! 因此,您最好使用boost::any::swap 模拟移动分配(如果您仍然想要使用boost::any