typeof 와 차이

  • typeofGCC 에서만 지원되는 비표준 기능
    • 이식성 문제가 발생할 수 있음
  • #define 를 사용한 매크로에서 type을 파악할 떄, 사용하면 좋음

decltype

  • C++11에서 도입된 표준 키워드
    • 이식성이 좋음
  • 컴파일 시점에 표현식의 타입을 추론
  • 특정 변수나 표현식의 타입을 추론하여 정확히 동일한 타입을 제공하는 데 사용
    • 참조 반환, 복잡한 표현식, 템플릿에서 정확한 리턴 타입을 유지
    • 값 복사가 필요할 떄는 사용 자제
  • 명확한 표현식을 팀에서 요구할 때, 여전히 후행 리턴타입 사용
    • -> decltype(t1 * t2) 와 같이 반환 타입이 t1 * t2 표현식의 결과라는 것을 명확히 보여주고 싶을 떄
  • 사용 예시
      int x = 10;
      decltype(x) y = 20; // y는 int 타입
  • auto 키워드와 결합하여 활용 (C++14 버전부터 지원)
      template<typename T1, typename T2>
      decltype(auto) add(const T1& t1, const T2& t2) {return t1 + t2;}
    • const string& 과 같이 기존 const auto&로 사용 해야 하는 타입을 편하게 유추 가능
    • C++11버전 구현
            template<typename T1, typename T2>
            auto add(const T1& t1, const T2& t2) -> decltype(t1+t2) {return t1 + t2;}

'공부 > C++' 카테고리의 다른 글

C++ IO스트림  (0) 2025.03.27
C++스트림  (0) 2025.03.26
추상 클래스  (0) 2025.03.15
문자열  (1) 2025.03.14
참조자(&)  (0) 2025.03.14

+ Recent posts

let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });