: 이펙티브 모던 auto / decltype 내용있음 추가하고,
auto 대입되는 쪽이 lvalue 라고 해서 auto도 lvalue가 되는 것은 아님.
우변 수식이 가진 참조, const, volatile 속성을 제거하고, 타입이 결정됨.
int n = 4;
int &r = n;
const int c = n;
const int &cr = c;
: 우변 수식이 가진 참조 속성을 제거되고, const, volatile속성을 유지됨.
-> auto 참조는 유지된다는 의미는 내포됨.
1) 변수가 인자로 있으면, 변수 타입을 그대로 따름
2) 변수가 연산자와 함께 있을 때,
변수와 연산자 전체가 lvalue 라면 참조 형식 , rvalue라면 값 타입임.
int n = 0;
int *p = &n; 있을때
decltype(n) d1;
decltype(p) d2;
decltype( *p ) d3;
decltype( (n) ) d4;
decltype ( n + n ) d5;
decltype (++ n) d6;
decltype(n++) d7;
-> 위 decltype의 형식은 어떻게 설정될까??