2016-09-17 4 views
0

아래에 보여처럼 위험한 참조 래퍼를 반환하는 것입니다 :반환 C++ 참조 래퍼

std::vector<std::reference_wrapper<int>> foo() { 

    int x = 10; 

    std::vector<std::reference_wrapper<int>> vec; 
    vec.push_back(x); 
    return vec; 

} 

foo2() { 
    std::cout << foo()[0] << std::endl; 
} 

내가 로컬/스택 변수 x가 foo2()에서 손실 될 수 있습니다 가정합니다.

+0

일반적인 매달린 포인터/참조 –

답변

0

std::vector<std::reference_wrapper<int>> foo(); 기능은 본질적으로 파괴 된 함수의 스택에있는 로컬 변수에 대한 참조 벡터를 리턴한다. 매달린 참조 벡터입니다. 이것은 정의되지 않은 동작입니다.