• Source
    1. #include <iostream>
    2. #include <functional>
    3. // C++ 레퍼런스 : 값의 이동, 레퍼런스 자체는 이동될수 없다
    4. // reference_wrapper : 이동가능한 참조
    5. // 대입연산시 참조가 이동
    6. int main()
    7. {
    8. int v1 = 10, v2 = 20;
    9.  
    10. int& r1 = v1;
    11. int& r2 = v2;
    12.  
    13. r1 = r2;
    14.  
    15. // raw reference
    16. std::cout << "v1 : " << v1 << std::endl; // 20
    17. std::cout << "v2 : " << v2 << std::endl; // 20
    18. std::cout << "r1 : " << r1 << std::endl; // 20
    19. std::cout << "r2 : " << r2 << std::endl; // 20
    20.  
    21. //init
    22. v1 = 10, v2 = 20;
    23.  
    24. std::reference_wrapper<int> ref_r1 = v1;
    25. std::reference_wrapper<int> ref_r2 = v2;
    26.  
    27. ref_r1 = ref_r2;
    28.  
    29. // raw reference reference_wrapper
    30. std::cout << "v1 : " << v1 << std::endl; // 20 10
    31. std::cout << "v2 : " << v2 << std::endl; // 20 20
    32. std::cout << "ref_r1 : " << ref_r1 << std::endl; // 20 20
    33. std::cout << "ref_r2 : " << ref_r2 << std::endl; // 20 20
    34. }