반응형

C++17 클래스 템플릿 타입 추론 (CTAD, Class Template Argument Deduction)

  • 기존 한계 사항:
    • std::pair 같은 템플릿 클래스에서 타입을 명시적으로 지정해야 했습니다.
      • 명시적 타입 사례: std::pair<std::string, int>
    • 타입이 긴 경우, 코드가 장황해졌습니다.


CTAD (C++17)

  • C++17부터 템플릿 클래스에서 자동으로 타입을 추론할 수 있는 기능(CTAD) 이 도입되었습니다.

  • cpp

      #include <iostream>
      #include <string>
      #include <utility>
      
      using namespace std::string_literals; // std::string 리터럴 사용
      
      int main() {
          std::pair p1{"one"s, 1};
          // 타입을 직접 지정하지 않아도 std::pair<std::string, int>로 자동 추론
      
          // std::make_pair 대신 CTAD를 활용해 더 간결한 코드 작성 가능.
          std::pair p2{"two"s, 2};
     	 
          // make_pair 사용하는 코드 
          //  std::pair p2 = std::make_pair("two"s, 2);
      
          std::cout << p1.first << ", " << p1.second << '\n';
          std::cout << p2.first << ", " << p2.second << '\n';
          return 0;
      }
    

  • 💡 CTAD 덕분에 std::pair<std::string, int>를 직접 명시할 필요 없이 간결한 코드 작성 이 가능합니다.



  • 도움이 되셨으면 하단의 ❤️ 공감 버튼 부탁 드립니다. 감사합니다! 😄
  • 일부 모바일 환경에서는 ❤️ 버튼이 보이지 않습니다.

728x90
반응형

+ Recent posts