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

StackOverflow https://stackoverflow.com/questions/112277

  •  02-07-2019
  •  | 
  •  

문제

정적 메타프로그래밍(일명 "템플릿 메타프로그래밍")은 컴파일 타임에 프로그램을 실행할 수 있는 훌륭한 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++ 정적 메타프로그래밍에 대해 더 자세히 알고 싶다면 가장 좋은 소스(책, 웹사이트, 온라인 코스웨어 등)는 무엇입니까?

도움이 되었습니까?

해결책

[내 질문에 대답하기]

지금까지 내가 찾은 최고의 소개는 10장 "C++의 정적 메타프로그래밍"입니다. 생성적 프로그래밍, 방법, 도구 및 애플리케이션 크시슈토프 차르네키(Krzysztof Czarnecki)와 울리히 W.아이즈네커, ISBN-13:9780201309775;그리고 17장 "메타프로그램" C++ 템플릿:완전한 가이드 데이비드 밴데부더(David Vandevoorder)와 니콜라이 M.조수티스, ISBN-13:9780201734843.

alt text alt text alt text alt text

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

일반적으로 C++ 프로그래밍에 대한 좋은 리소스는 다음과 같습니다. 현대적인 C++ 디자인 작성자: Andrei Alexandrescu, ISBN-13:9780201704310.이 책에는 약간의 메타프로그래밍과 다른 템플릿 기술이 혼합되어 있습니다.특히 메타프로그래밍에 대해서는 섹션 2.1 "컴파일 시간 어설션", 2.4 "적분 상수를 유형에 매핑", 2.6 "유형 선택", 2.7 "컴파일 시간에 변환 가능성 및 상속 감지", 2.9 " 섹션을 참조하세요.NullType 그리고 EmptyType" 및 2.10 "유형 특성".

내가 찾은 최고의 중급/고급 리소스는 다음과 같습니다. C++ 템플릿 메타프로그래밍 David Abrahams 및 Aleksey Gurtovoy 저작, ISBN-13:9780321227256

한 권의 책을 원한다면, C++ 템플릿:완전한 가이드 이는 일반적인 템플릿에 대한 최종 참조이기도 하기 때문입니다.

다른 팁

안드레이 알렉산드레스쿠 현대적인 C++ 디자인 이 책은 빠르고 효율적인 최신 C++ 코드에 대한 많은 요령과 기타 요령을 다루고 있으며 로키 도서관.

또한 언급할 가치가 있는 것은 후원 이러한 기술을 많이 사용하고 일반적으로 학습하기에 매우 높은 품질을 갖춘 라이브러리입니다(일부는 상당히 밀도가 높지만).

현대적인 C++ 디자인, Alexandrescu의 훌륭한 책이자 디자인 패턴 프레임워크입니다.경고의 말은, 이 책을 읽은 후 나는 C++ 사용을 중단하고 "이게 뭐야, 더 나은 언어를 골라 무료로 얻을 수 있겠구나"라고 생각했다는 것입니다.

떠오르는 두 권의 좋은 책은 다음과 같습니다.

  • Modern C++ Design / Andrei Alexandrescu (이름과 달리 실제로는 7살이에요!)
  • C++ 템플릿:완전한 가이드 / Vandevoorde & Josuttis

꽤 심도 깊은 분야이기 때문에 웹사이트보다 이런 좋은 책을 꼭 추천합니다.일부 고급 기술을 사용하면 코드가 어떻게 작동하는지 파악하기 위해 한동안 코드를 연구하게 됩니다.

최신 C++ 내가 읽은 최고의 소개 중 하나입니다.템플릿 메타프로그래밍의 실제 유용한 예를 다룹니다.동반 라이브러리도 살펴보세요. 로키.

경험이 많은 사람의 목록이 제한되어 있기 때문에 책의 목록이 많지는 않을 것입니다.템플릿 메타프로그래밍은 2000년 제1회 C++ 템플릿 프로그래밍 워크숍을 전후하여 본격적으로 시작되었으며, 지금까지 언급된 많은 저자들이 참석했습니다.(IIRC, 안드레이는 그렇지 않았습니다.) 이 선구자들이 이 분야에 큰 영향을 미쳤고, 기본적으로 써야 할 내용은 이제 쓰여졌습니다.개인적으로 저는 Vandevoorde & Josuttis에게 조언을 드리고 싶습니다.Alexandrescu의 책은 해당 분야를 처음 접하는 사람에게는 어려운 책입니다.

Veldhuizen의 원본 논문은 좋았습니다.책 전체를 읽고 싶다면 Vandevoorde의 책 "C++ 템플릿 전체 가이드"가 있습니다.그리고 석사 과정을 수강할 준비가 되면 Alexandrescu의 Modern C++ Design을 사용해 보세요.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top