Rvalue, Lvalue, Value category

Rvalue, Lvalue, Value category

이동시킬 수 있다 이동시킬 수 없다
정체를 알 수 있다 xvalue lvalue
정체를 알 수 없다 prvalue
  • glvalue (generalized lvalue)
    • evaluation determines the entity of an object, bitfield, or a fuction
  • prvalue (pure rvalue)
    • Computing a value that is not associated with an object
    • Creating a temporary object and denoting it
    • 문자열 리터러를 제외한 모든 리터럴 (true, NULL)
    • 레퍼런스가 아닌 것을 리턴하는 함수의 호출식
    • 후위 증감 연산자
    • this, enum
  • xvalue (expiring value)
    • glvalue that denoting an object or bitfield whose resources can be reused.
  • lvalue == Left hand side
    • glvalue which is not a xvalue
    • 변수, 함수의 이름, 어떤 타입의 데이터 멤버(std::endl, std::cin)
    • 전위 증감 연산자
    • 문자열 리터럴
    • 멤버 참조식 a.m, a->m
  • rvalue == Right hand side
    • prvalue or xvalue