Programming

C ++ 템플릿 메타 프로그래밍에 대한 최고의 소개?

procodes 2020. 7. 27. 21:41
반응형

C ++ 템플릿 메타 프로그래밍에 대한 최고의 소개? [닫은]


정적 메타 프로그래밍 (일명 "템플릿 메타 프로그래밍")은 컴파일 타임에 프로그램을 실행할 수있는 훌륭한 C ++ 기술입니다. 이 정식 메타 프로그래밍 예제를 읽 자마자 전구가 내 머리에서 사라졌습니다.

#include <iostream>
using namespace std;

template< int n >
struct factorial { enum { ret = factorial< n - 1 >::ret * n }; };

template<>
struct factorial< 0 > { enum { ret = 1 }; };

int main() {
    cout << "7! = " << factorial< 7 >::ret << endl; // 5040
    return 0;
}

C ++ 정적 메타 프로그래밍에 대해 더 배우려면 최고의 소스 (책, 웹 사이트, 온라인 코스웨어 등)는 무엇입니까?


[나의 질문에 답하기]

지금까지 내가 찾은 최고의 소개는 Krzysztof Czarnecki와 Ulrich W. Eisenecker의 ISBN-13 : 9780201309775; 10 장, "C ++의 정적 메타 프로그래밍"( Generative Programming, Methods, Tools and Applications ) C ++ 템플릿 의 17 장 "메타 프로그램" : David Vandevoorder 의 완전한 안내서 및 Nicolai M. Josuttis, ISBN-13 : 9780201734843.

대체 텍스트 대체 텍스트 대체 텍스트 대체 텍스트

Todd Veldhuizen은 훌륭한 튜토리얼을 제공 합니다 .

C ++ 프로그래밍에 대한 좋은 참고 자료는 ISBN-13 : 9780201704310의 Andrei Alexandrescu의 Modern C ++ Design입니다 .이 책은 다른 템플릿 기술과 약간의 메타 프로그래밍을 혼합합니다. 특히 메타 프로그래밍에 대해서는 2.1 "컴파일 타임 어설 션", 2.4 "인수에 정수 상수 매핑", 2.6 "타입 선택", 2.7 "컴파일 타임에서 변환 성 및 상속 감지", 2.9 " NullTypeEmptyType"및 2.10 "타입 특성 ".

내가 찾은 최고의 중급 / 고급 리소스는 David Abrahams와 Aleksey Gurtovoy의 ISBN ++ : C ++ Template Metaprogramming : 9780321227256

한 권의 책만 원한다면 C ++ 템플릿 : 전체 가이드를 참조하십시오.이 템플릿은 일반적으로 템플릿에 대한 결정적인 참조이기도합니다.


Andrei Alexandrescu의 Modern C ++ Design 책은 빠르고 효율적인 현대적인 C ++ 코드에 대한이 많은 기술과 기타 기술을 다루고 있으며 Loki 라이브러리 의 기초입니다 .

언급 할 가치가있는 Boost 라이브러리 이러한 기술을 많이 사용하며 일반적으로 배울 수있는 고품질입니다 (일부는 밀도가 높음).


Alexandrescu의 화려한 책과 디자인 패턴 프레임 워크 인 Modern C ++ Design 경고의 말씀,이 책을 읽은 후 나는 C ++을 중단하고 "도대체 더 좋은 언어를 골라 무료로 구할 수있다"고 생각했다.


떠오르는 두 가지 좋은 책은 다음과 같습니다.

  • Modern C ++ Design / Andrei Alexandrescu (이름에도 불구하고 실제로 7 살입니다!)
  • C ++ 템플릿 : 완전한 안내서 / Vandevoorde & Josuttis

그것은 심도있는 분야이므로, 이것들 중 하나와 같은 좋은 책은 웹 사이트보다 확실히 권장됩니다. 고급 기술 중 일부는 코드의 작동 방식을 파악하기 위해 얼마 동안 코드를 연구하게합니다.


현대 C ++ 은 내가 읽은 최고의 소개 중 하나입니다. 템플릿 메타 프로그래밍의 유용한 예를 다룹니다. 또한 동반자 라이브러리 Loki를 살펴보십시오 .


많은 경험을 가진 사람들의 목록이 제한되어 있기 때문에 많은 책 목록이 없습니다. 템플릿 메타 프로그래밍은 2000 년 최초의 C ++ 템플릿 프로그래밍 워크샵을 중심으로 시작되었으며 지금까지 많은 저자들이 참석했습니다. (IIRC, Andrei는 그렇지 않았습니다.)이 개척자들은이 분야에 큰 영향을 미쳤으며, 기본적으로 무엇을 기록해야하는지가 기록되었습니다. 개인적으로 Vandevoorde & Josuttis에게 조언하고 싶습니다. Alexandrescu 's는 당신이이 분야에 처음이라면 힘든 책입니다.


Veldhuizen의 원본 논문은 훌륭했습니다. 전체 책을 읽으려면 Vandevoorde의 책 "C ++ Templates Complete Guide"가 있습니다. 그리고 마스터 코스 준비가되면 Alexandrescu의 Modern C ++ Design을 사용해보십시오.


Google Alexandrescu, 최신 C ++ 디자인 : 일반 프로그래밍 및 디자인 패턴 적용

참고 URL : https://stackoverflow.com/questions/112277/best-introduction-to-c-template-metaprogramming

반응형