auto
auto 추론: 템플릿과 동일
- auto
- 표현식의 참조, const, volatile 제거
- auto&
- 표현식의 참조만 제거 ```cpp int main() { const int c = 10; const int& r = 10; int n = 10; int*p = &n;
auto a1 = r; // int auto&a2 = r; // auto: const int, a2: const int& decltype(r) n2 = c; // const int& // decltype 은 정확한 타입으로 추론된다. }
--- ```cpp int main() { int n = 10; int *p = &n; // decltyped 은 아래 경우 조심해야 한다. decltype(*p) n2 = n; // n2: int& auto n3 = *p; // n3: int decltype(auto) n4 = *p; // 우변을 보고 추론 하는데 추론 방식을 decltype 으로 해 달라 // 결국 참조. n4: int& }
```cpp #include
int x = 10; int& foo() { return x; }
// 완벽한 전달자 함수
template
int main() { auto& n = HowLong(foo); n = 20; std::cout«x«std::endl; // 20 } ```
댓글남기기