✅auto / decltype deduction (공제라는 뜻..?)

보물창고·2023년 1월 26일
0
  • 업데이트 : 240319 는 네이버 블로그에 추가함.

230719 추가

: 이펙티브 모던 auto / decltype 내용있음 추가하고,
auto 대입되는 쪽이 lvalue 라고 해서 auto도 lvalue가 되는 것은 아님.

auto 의 타입 추론

auto를 값타입으로 사용할 때, 값 복사를 함.

우변 수식이 가진 참조, const, volatile 속성을 제거하고, 타입이 결정됨.

  • problem 예시 코드
    : 아래의 변수들을 auto로 받은 후, typeid를 출력하라.

int n = 4;
int &r = n;
const int c = n;
const int &cr = c;

auto를 참조 타입으로 사용할때

: 우변 수식이 가진 참조 속성을 제거되고, const, volatile속성을 유지됨.
-> auto 참조는 유지된다는 의미는 내포됨.

  • 예시 코드
    auto &a5 = n; -> a5 : int&
    auto &a6 = r; -> a6 : int&
    auto &a7 = c; -> a7 : const int&
    auto &a8 = cr; -> a7 : const int&

decltype 타입 추론

특징.

  • 1) 변수가 인자로 있으면, 변수 타입을 그대로 따름

  • 2) 변수가 연산자와 함께 있을 때,
    변수와 연산자 전체가 lvalue 라면 참조 형식 , rvalue라면 값 타입임.

problem

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의 형식은 어떻게 설정될까??

  • 정답은 블로그에 : decltype 타입 추론하기

profile
🔥🔥🔥

0개의 댓글