ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Effective C++...46
    일지 2022. 8. 24. 07:43

    템플릿 메타 프로그래밍, 하지 않겠는가?

    TMP의 장점

    TMP에는 크게 두 가지 장점이 존재한다.

    • 까다롭거나 불가능한 일을 쉽게 처리할 수 있다.
    • 기존 작업을 런타임 영역에서 컴파일 영역으로 전환할 수 있다.
      • 실행 도중에 잡혀 오던 에러를 컴파일 도중에 찾을 수 있다.
      • 효율적일 여지가 많다.
        • 실행코드가 작아진다.
        • 실행 시간이 짧아진다.
        • 메모리도 적게 잡아먹는다.

     

    TMP의 반복 처리

    TMP는 루프가 존재하지 않기 때문에 재귀를 이용해 반복 처리를 하게 된다.


    template<unsigned n>

    struct Factorial {

        // 이 경우 재귀를 통해 구현이 되며 모든 계산이 컴파일 타임에 이루어진다.

        enum { value = n * Factorial<n - 1>::value };

    };

    template<>

    struct Factorial<0> {

        enum { value = 1 };

    };


     

    TMP가 강점을 가지는 영역

    TMP는 여러 부분에서 사용되지만 다음의 영역에서는 확실한 강점을 가진다.

    • 치수 단위의 정확성 확인 정확한 치수를 맞춰야 하는 물리 등의 계산에서 컴파일 타임에 이러한 치수를 확인할 수 있다.
    • 행렬 연산의 최적화 덩치 큰 임시 객체를 없애는 것은 물론 루프까지 합칠 수 있다.
    • 맞춤식 디자인 패턴 구현의 생성 스마트 포인터 같이 설계상의 정책을 만들고 이것을 통해 필요한 인스턴스를 구현할 수 있다.

     

    댓글

Designed by Tistory.