decltype(auto)
auto
보다 더 정확하고 정밀한 타입 추론 가능auto
vs decltype(auto)
키워드 | 타입 추론 방식 | 참조 유지 여부 |
---|---|---|
auto | 값을 복사해서 타입 추론 | ❌ 참조 무시 |
decltype(auto) | 표현식 그대로 타입 추론 (참조 포함) | ✅ 참조 유지 |
int x = 10;
int& getRef() { return x; }
auto a = getRef(); // int (참조 제거됨 → 복사)
decltype(auto) b = getRef(); // int& (참조 유지됨)
변수 | 타입 | 결과 |
---|---|---|
a | int | 복사본 |
b | int& | 원본 참조함 |
vector<int> v = {1, 2, 3};
auto val = v[0]; // int (복사됨)
decltype(auto) ref = v[0]; // int& (참조 유지됨)
val = 100; // 원본에 영향 없음
ref = 100; // v[0]이 100으로 바뀜