2013-08-10 3 views
1

이 코드는 컴파일하지만 난 그것이 내가 의도하지 생각하지 않는다, 즉, 이동, 복사하지 마십시오, 당신은 들여다 경우 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?? 

답변

3

에 스택에 생성 된 boost::any 객체 boost/any.hpp 및 해당 소스 코드를 관찰 (적어도 이동 단어를 찾을 수 있습니다) 완전히 C++ 11 인식하지 못함 (불행히도)! 그래서 내가 소스 1.53을 확인하고 그렇게 나를 넘어 경향이 증거를 볼 수 있지만 코드를 강화하지 않았다

+0

(당신은 여전히 ​​모든 boost::any을 사용하려는 경우) 이동 할당을 시뮬레이션 boost::any::swap에 사용하는 것이 좋습니다 거라고 내가 뭔가를 놓친다고 생각했다. 하지만 그때 나는이 토론을 보았다. https://svn.boost.org/trac/boost/ticket/6999 – user841550

+0

@ user841550 놓칠 게 없다.) - 크기는 254 줄이고 ~ 6k이다. :) 너는 너의 눈을 더 믿어야한다 :) (그리고 자기를 믿는다) – zaufi

관련 문제