C++ TEMPLATE METAPROGRAMMING
해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
패키지
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.
책 소개
작가정보
저자(글) DAVID ABRAHAMS
1996년부터 활동해 온 프로그래밍 서적 전문 번역가로, Game Programming Gems 시리즈와 컴퓨터 프로그래밍의 예술(The Art of Computer Programming) 제1~4A권, UNIX 고급 프로그래밍(Advanced Programming in UNIX Environment) 제2판과 제3판을 포함하여 60여 권의 다양한 프로그래밍 서적을 번역했다. C++ 관련 번역서로는 일반적 프로그래밍과 STL, C++ Template Metaprogramming, (C++로 배우는) 프로그래밍의 원리와 실제 등이 있다. 수학 관련 번역서로는 《구체 수학》, 《3D 게임 프로그래밍 & 컴퓨터 그래픽을 위한 수학》 제1판·제2판 등이 있고, 심층학습 관련 번역서로는 《인공지능: 현대적 접근방식》 제4판, 《심층학습》, 《신경망과 심층 학습》 등이 있다. 번역과 프로그래밍 외에 소프트웨어 문서화에도 많은 관심이 있으며, 수많은 오픈소스 프로젝트들의 표준 문서 형식으로 쓰이는 DocBook의 국내 사용자 모임인 닥북 한국(http://docbook.kr)의 일원이다. 현재 번역서 정보 사이트 occam’s Razor(http://occamsrazr.net)와 게임 개발 및 개발서 관련 사이트 GpgStudy(http://www.gpgstudy.com)를 운영하고 있다.
목차
- 서문
감사의 말
이 책을 제대로 활용하려면
1. 도입
1.1 시작하며
1.2 메타프로그램이란?
1.3 호스트 언어 안에서의 메타프로그래밍
1.4 C++의 메타프로그래밍
1.4.1 수치 계산
1.4.2 형식의 계산
1.5 메타프로그래밍이 필요한 이유
1.5.1 대안 1: 실행시점 계산
1.5.2 대안 2: 사용자 해석
1.5.3 C++ 메타프로그래밍이 필요한 이유
1.6 언제 메타프로그래밍을 할 것인가
1.7 메타프로그래밍 라이브러리가 필요한 이유
2. 특질과 형식 다루기
2.1 형식 연관
2.1.1 직접적인 접근방식
2.1.2 좀 더 우회적인 방식
2.1.3 지름길을 찾아서
2.2 메타함수
2.3 수치적인 메타함수
2.4 실행 시점에서의 선택
2.4.1 iter_swap에 대해 좀 더
2.4.2 좀 더 최적화하자면
2.4.3 또 다른 문제
2.4.4 최종적인 해결책
2.5 Boost Type Traits 라이브러리에 대한 간단한 소개
2.5.1 일반적인 사항
2.5.2 기본 형식 범주화
2.5.3 2차 형식 범주화
2.5.4 형식 속성들
2.5.5 형식들 사이의 관계
2.5.6 형식 변환
2.6 무항 메타함수
2.7 메타함수의 정의
2.8 역사
2.9 세부사항
2.10 실습 과제
3. 메타함수에 대해 좀 더 자세히
3.1 차원 해석
3.1.1 차원의 표현
3.1.2 수량의 표현
3.1.3 더하기와 빼기의 구현
3.1.4 곱하기의 구현
3.1.5 나누기 구현
3.2 고차 메타함수들
3.3 자리표 다루기
3.3.1 lambda 메타함수
3.3.2 apply 메타함수
3.4 람다의 추가적인 기능들
3.4.1 부분적인 메타함수 적용
3.4.2 메타함수 합성
3.5 람다의 세부사항
3.5.1 자리표
3.5.2 자리표 표현식의 정의
3.5.3 람다와 비 메타함수 템플릿
3.5.4 게으름의 가치
3.6 세부사항
3.7 실습 과제
4. 정수 형식 래퍼들과 연산들
4.1 부울 래퍼들과 연산들
4.1.1 형식 선택
4.1.2 게으른 형식 선택
4.1.3 논리 연산자들
4.2 정수 래퍼들과 연산들
4.2.1 정수 연산자들
4.2.2 _c 정수 단축 표기
4.3 실습 과제
5. 순차열과 반복자
5.1 개념
5.2 순차열과 알고리즘
5.3 반복자
5.4 반복자 개념들
5.4.1 전진 반복자
5.4.2 양방향 반복자
5.4.3 임의 접근 반복자
5.5 순차열 개념들
5.5.1 순차열 운행 개념들
5.5.2 확장성
5.5.3 연관 순차열
5.5.4 확장 가능 연관 순차열
5.6 순차열의 상등
5.7 고유 순차열 연산들
5.8 순차열 클래스들
5.8.1 list
5.8.2 vector
5.8.3 deque
5.8.4 range_c
5.8.5 map
5.8.6 set
5.8.7 iterator_range
5.9 정수 순차열 래퍼들
5.10 순차열 파생
5.11 순차열을 직접 작성하려면
5.11.1 tiny 순차열 만들기
5.11.2 반복자 표현
5.11.3 tiny에 대한 at 구현
5.11.4 tiny_iterator 구현의 완성
5.11.5 begin과 end
5.11.6 확장성 추가
5.12 세부사항
5.13 실습 과제
6. 알고리즘
6.1 알고리즘, 관용구, 재사용, 추상
6.2 MPL의 알고리즘들
6.3 삽입자
6.4 기본적인 순차열 알고리즘들
6.5 조회 알고리즘들
6.6 순차열 생성 알고리즘들
6.7 알고리즘 직접 작성하기
6.8 세부사항
6.9 실습 과제
7. 뷰와 반복자 적응자
7.1 예제 몇 개
7.1.1 순차열 요소들로 계산된 값들의 비교
7.1.2 여러 순차열들을 결합하기
7.1.3 불필요한 계산 피하기
7.1.4 선택적인 요소 처리
7.2 뷰 개념
7.3 반복자 적응자
7.4 뷰 직접 작성하기
7.5 역사
7.6 실습 과제
8. 진단
8.1 오류 소설을 디버깅하기
8.1.1 인스턴스화 역추적
8.1.2 다양한 오류 서식들
8.2 도구를 이용한 진단 분석
8.2.1 다른 의견도 들어볼 것
8.2.2 소스 코드 이동 보조 기능을 활용할 것
8.2.3 쓸 데 없는 가지를 쳐낼 것
8.3 의도적인 진단 생성
8.3.1 정적 단언문
8.3.2 MPL 정적 단언문
8.3.3 형식 출력
8.4 역사
8.5 세부사항
8.6 실습 과제
9. 컴파일 시점/실행시점 경계 건너기
9.1 for_each
9.1.1 형식 출력
9.1.2 형식 방문
9.2 구현 선택
9.2.1 if 문
9.2.2 클래스 템플릿 특수화
9.2.3 꼬리표 분배
9.3 객체 생성기
9.4 구조 선택
9.5 클래스 합성
9.6 템플릿 인수로서의 (멤버)함수 포인터
9.7 형식 삭제(type erasure)
9.7.1 예제 하나
9.7.2 일반화
9.7.3 "수동" 형식 삭제
9.7.4 자동적인 형식 삭제
9.7.5 인터페이스의 보존
9.8 묘하게 되풀이되는 템플릿 패턴
9.8.1 함수의 생성
9.8.2 중복적재 해소의 관리
9.9 중복적재 집합의 명시적인 관리
9.10 "sizeof 트릭"
9.11 요약
9.12 실습 과제
10. 영역 국한 내장 언어
10.1 작은 언어 하나...
10.2 ...생각보다는 크다
10.2.1 make 유틸리티 언어
10.2.2 배커스 나우어 형식
10.2.3 YACC
10.2.4 DSL 요약
10.3 뒤집힌 DSL
10.4 호스트 언어로서의 C++
10.5 Blitz++와 표현식 템플릿
10.5.1 문제
10.5.2 표현식 템플릿
10.5.3 그 외의 Blitz++ 마법
10.6 범용 DSEL들
10.6.1 명명된 매개변수
10.6.2 익명 함수 만들기
10.7 Boost Spirit 라이브러리
10.7.1 닫힘
10.7.2 하위규칙
10.8 요약
10.9 실습 과제
11. DSEL 설계 따라하기
11.1 유한상태기계
11.1.1 영역 추상
11.1.2 표기법
11.2 프레임웍 설계 목표
11.3 프레임웍 인터페이스 기초
11.4 DSL 선택
11.4.1 전이표의 표현
11.4.2 종합
11.5 구현
11.6 분석
11.7 C++ 언어 자체의 개선 방향
11.8 실습 과제
부록 A 전처리기 메타프로그래밍 입문
A.1 동기
A.1.1 코드 생성
A.1.2 해결책은 전처리기
A.2 전처리기의 근본 추상들
A.2.1 전처리 토큰
A.2.2 매크로
A.2.3 매크로 인수
A.3 전처리기 라이브러리 구조
A.4 전처리기 라이브러리의 추상들
A.4.1 되풀이
A.4.2 산술, 논리, 비교 연산들
A.4.3 제어 구조
A.4.4 토큰 붙이기
A.4.5 자료 형식
A.5 실습 과제
부록 B typename 키워드와 template 키워드
B.1 논점
B.1.1 문제점 하나
B.1.2 형식의 모호성 해소
B.1.3 class 대 typename
B.1.4 문제점 둘
B.1.5 템플릿 모호성 해소
B.2 규칙
B.2.1 typename 키워드
B.2.2 template 키워드
부록 C 컴파일 시점 성능
C.1 계산 모형
C.1.1 결과 보존
C.1.2 예제 하나
C.1.3 숨겨져 있는 것들
C.2 컴파일 시간 관리
C.3 테스트
C.3.1 결과 보존의 효과
C.3.2 기억한 결과의 조회 비용
C.3.3 특수화의 언급
C.3.4 내포된 템플릿 인스턴스화
C.3.5 부분 특수화 개수
C.3.6 긴 기호
C.3.7 메타함수 이름의 구조 복잡도
부록 D MPL 이식성 요약
참고문헌
찾아보기
기본정보
ISBN | 9788956742670 ( 8956742677 ) |
---|---|
발행(출시)일자 | 2005년 06월 25일 |
쪽수 | 406쪽 |
총권수 | 1권 |
Klover
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
판매가 1,000원 미만 도서의 경우 리워드 지급 대상에서 제외됩니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
리뷰는 1인이 중복으로 작성하실 수는 있지만, 평점계산은 가장 최근에 남긴 1건의 리뷰만 반영됩니다.
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
구매 후 리뷰 작성 시, e교환권 100원 적립