Boost :: любой подвижный?

Этот код компилируется, но я не думаю, что он делает то, что хотел, то есть перемещает, не копирует, 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

Решение

если вы посмотрите в boost/any.hpp и наблюдать его исходный код (по крайней мере, найти для переехать словом) вы можете обнаружить, что это полностью C ++ 11 не знают (к сожалению)!
так что тебе лучше использовать boost::any::swap в моделировать переместить назначение (если вы все еще хотите использовать boost::any совсем)

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]