1 분 소요

auto 추론: 템플릿과 동일

  1. auto
    • 표현식의 참조, const, volatile 제거
  2. 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 decltype(auto) HowLong(F f) { return f(); }

int main() { auto& n = HowLong(foo); n = 20; std::cout«x«std::endl; // 20 } ```

카테고리:

업데이트:

댓글남기기