본문내용 바로가기
MD의선택 무료배송 소득공제

[출간예정] C++ 템플릿 2/e 완벽 가이드

다비드 반데부르드 , 니콜라이 요수티스, 더글라스 그레고르 지음 | 한정애 옮김 | 에이콘출판 | 2018년 10월 22일 출간 이 책의 개정정보 : 2008년 출간
  • 정가 : 50,000원
    판매가 : 45,000 [10%↓ 5,000원 할인]
  • 통합포인트 :
    [기본적립] 2,500원 적립 [5% 적립] 안내 [추가적립] 5만원 이상 구매 시 2천원 추가적립 [회원혜택] 우수회원 5만원 이상 구매 시 2~3% 추가적립
  • 추가혜택 : 카드/포인트 안내 도서소득공제 안내 추가혜택 더보기
  • 배송비 : 무료 배송비 안내
  • 예약판매 : 2018년 10월 23일 출고 예정 배송일정 안내

알립니다.

  • 본 도서는 2018년 10월 23일 출고 예정인 출간예정도서 입니다. 단, 출판사의 사정으로 출간이 지연될 수 있으니, 이점 양해 부탁드립니다.
  • 본 도서는 출판사의 사정으로 출간이 지연될 수 있으며,
    본 도서와 같이 구매하신 상품은 본 도서의 출간과 더불어 출고되오니 이점 유의하시기 바랍니다.
  • 출간예정 도서의 경우 실제 출간 후 도서정보가 달라질 수 있습니다. 이 점 양해 부탁드립니다.
장바구니 담기 바로구매

책 그리고 꽃 서비스
책 그리고 꽃 | 책과 꽃을 함께 선물하세요 자세히보기

닫기

선물하기 보관함 담기 출간알림신청
상품상세정보
ISBN 9791161752174(116175217X)
쪽수 1068쪽
크기 188 * 235 * 44 mm 판형알림
이 책의 원서/번역서 C++ Templates 2nd Edition: The Complete Guide/David Vandevoorde

책소개

이 책이 속한 분야

템플릿은 C++의 가장 강력한 기능 중 하나이지만 제대로 이해하는 사람도 적고, 잘 사용하는 사람도 드물다. 이 책에서는 확실한 가이드를 통해 템플릿의 기초에서부터 C++11, C++14, C++17의 최신 기술을 총망라한 고급 이론까지 제공해 이해를 돕는다. 이번 2판에서는 새로운 언어 특성들을 템플릿과 결합시켜 사용하는 방법을 풍부하게 제시한다. 특히 컴파일 시간에 많은 것을 해치우는 메타 프로그래밍 내용이 강화돼, 호기심 많은 독자들의 궁금증을 해소시켜줄 수 있을 것이다.

■ 템플릿의 정확한 동작 방법과 관련 함정을 피하는 방법
■ 성능이나 안전성을 해치지 않으면서도 소스코드를 재활용하는 방법
■ 더 유연하고 유지 보수가 쉬운 소프트웨어를 만드는 방법
■ C++ 표준 라이브러리의 일반 프로그래밍을 활용하는 방법
■ 요즘 가장 효과적인 기법 연마
■ 새로 추가될 특성과 개념 미리 알아보기

저자소개

저자 : 다비드 반데부르드

다비드 반데부르드(David Vandevoorde)
에디슨 디자인 그룹의 부사장으로 자사의 컴파일러의 C++ 핵심 특성을 설계한다. 잘 알려진 포럼인 comp.lang.c++.moderated의 공동 창설자로, C++ 표준화에도 활동하고 있다. 렌슬러 폴리테크닉 대학교에서는 컴퓨터 과학으로 석사와 박사 학위를 받았고, 브뤼셀 자유 대학교에서 석사 학위를 받았다. 알고리즘 개발과 강의에 관심이 많다.

저자 : 니콜라이 요수티스

니콜라이 요수티스(Nicolai M. Josuttis)
독립 시스템 설계자, 기술 관리자, 컨설턴트, 강사이며, C++ 표준화에서 20년째 활동하고 있다. 라이브러리 워킹그룹에 참여하고 있으며, 특히 일반적인 애플리케이션 프로그래머의 상황에 특별히 관심이 많다. 강의와 권위 있는 책을 쓴 것으로 C++ 커뮤니티에서 잘 알려져 있다. 집필한 책으로는 『The C++ Standard Library, Second Edition』(Addition-Wesley, 2012) 등이 있다.

저자 : 더글라스 그레고르

더글라스 그레고르(Douglas Gregor)
C++ 라이브러리 설계 경험을 가진 선임 컴파일러 개발자다. 부스트에 초기부터 기여해 오면서 C++ 표준에 반영되기도 한 여러 라이브러리를 개발했다. 그 후 오픈소스 Clang C++ 컴파일러의 구현을 이끌어 C++11 지원을 완성했고, C++11의 표준화에도 활동했다. 렌슬러 폴리테크닉 대학교에서 컴퓨터 과학으로 박사 학위를 받았다.

역자 : 한정애

한정애
서울대학교 컴퓨터공학과를 졸업하고 동 대학원에서 박사학위를 받았다. 글로벌 소프트웨어 회사인 SAP에서 개발하다 현재는 삼성증권에서 일하고 있다. 리눅스와 C++ 프로그래밍을 비롯한 여러 가지 프로그래밍 관련 분야에 관심이 많다. 번역서로는 에이콘출판사에서 출간한 『두렵지 않은 C++』(2013), 『C++ 표준 라이브러리』(2013), 『Boost C++ 애플리케이션 개발』(2015), 『Boost.Asio C++ 네트워크 프로그래밍 쿡북』(2017), 『텐서플로1.x로 배우는 머신 러닝』(2018)이 있다.

작가의 말

C++의 템플릿이란 개념은 벌써 30년도 더 됐다. C++ 템플릿은 1990년 “주석이 달린 C++ 참조 매뉴얼” 혹은 “ARM”(EllisStroustrupARM)이란 문서에도 나와 있으며 ARM이 출판되기 전에 템플릿에 대해 언급한 전문 분야 출간서도 있었다. 하지만 10년이 넘게 이토록 황홀하고 복잡하며 강력한 C++ 기능인 템플릿에 대한 기초적인 개념을 충실히 설명하거나 고급 템플릿 기술을 설명한 문서는 거의 없었다. 이 책의 1판을 쓸 당시에는, 템플릿에 대한 문서 기근을 해결하기 위해 우리들은 직접 템플릿에 관한 책을 쓰기로 마음먹었었다(별로 겸손해 보이진 않겠지만).
1판이 출판됐던 2002년 이후로 C++은 정말 많이 바뀌었다. C++의 새 표준마다 새로운 기능이 추가됐고 C++ 커뮤니티에서는 끊임없이 혁신하며 새로운 템플릿 기반 프로그래밍 기법을 발견해내고 있다. 그래서 이번 2판은 1판과 목표는 같지만 이번에는 “현대 C++”를 대상으로 한다.
이번 책을 쓸 때는 각기 다른 배경과 다른 의도를 가지고 접근했다. 데이비드(David)는 숙련된 컴파일러 구현자이자 C++ 표준화 위원회 코어 언어 워킹(core language working) 그룹의 멤버로써 템플릿의 모든 강점(과 문제)을 정확하고 상세하게 설명하고 싶어 했다. 니코(Nico)는 “일반적인” 어플리케이션 프로그래머로써 역시 C++표준화 위원회 코어 언어 워킹 그룹의 멤버이며, 템플릿을 사용하는 다양한 기술을 이해하고 이를 활용하는 방법에 대해 관심이 많았다. 더그(Doug)는 컴파일러 구현자이자 언어 설계자, 템플릿 라이브러리 개발자로, 템플릿 라이브러리를 구축하는데 사용되는 수많은 기법을 모으고 분류하고 평가하는데 많은 관심이 있다. 더불어 이러한 지식을 독자들과 모든 커뮤니티와 나눔으로써 더 이상 템플릿이 잘못 이해되거나 혼란스럽게 느끼지 않게 하고 싶었다.
그래서 이 책에서는 일상적인 예제를 통한 템플릿에 대한 개념뿐 아니라 템플릿의 정확한 동작에 대해서도 상세하게 설명했다. 템플릿의 기본 법칙에서 시작해 “템플릿 프로그래밍의 기술”까지 다루게 되며, 정적 다형성, 형식 특질, 메타 프로그래밍, 표현식 템플릿과 같은 기법들을 발견(혹은 재발견)하게 될 것이다. 또한 C++ 표준 라이브러리에 대해 더 깊이 이해할 수 있게 대부분의 코드가 템플릿을 사용할 것이다.
이 책을 쓰는 동안 많은 것을 배웠으며 무척 재미있었다. 여러분도 우리와 같은 느낌을 받길 원하며, 이 책을 즐겨주시길 바란다.

목차

1부. 템플릿 기본

001장. 함수 템플릿
__1.1 함수 템플릿
__1.2 템플릿 인자 연역
__1.3 다중 템플릿 파라미터
__1.4 기본 템플릿 인자
__1.5 함수 템플릿 오버로딩
__1.6 그런데 ... 해야 하지 않는가?
__1.7 요약

002장. 클래스 템플릿
__2.1 클래스 템플릿 Stack의 구현
__2.2 클래스 템플릿 Stack의 사용
__2.3 클래스 템플릿의 일부 사용
__2.4 프렌드
__2.5 클래스 템플릿의 특수화
__2.6 부분 특수화
__2.7 기본 클래스 템플릿 인자
__2.8 형식 별칭
__2.9 템플릿 클래스 인자 연역
__2.10 템플릿화된 집합
__2.11 요약

003장. 형식이 아닌 템플릿 파라미터
__3.1 형식이 아닌 클래스 템플릿 파라미터
__3.2 형식이 아닌 함수 템플릿 파라미터
__3.3 형식이 아닌 템플릿 파라미터에 대한 제약
__3.4 템플릿 파라미터 형식로서의 auto
__3.5 요약

004장. 가변 인자 템플릿
__4.1 가변 인자 템플릿
__4.2 접힌 표현식
__4.3 가변 인자 템플릿 애플리케이션
__4.4 가변 클래스 템플릿과 가변 표현식
__4.5 요약

005장. 까다로운 기초 지식
__5.1 키워드 typename
__5.2 0 초기화
__5.3 this-> 사용
__5.4 원시 배열과 문자열 리터럴을 사용하는 템플릿
__5.5 멤버 템플릿
__5.6 변수 템플릿
__5.7 템플릿 템플릿 파라미터
__5.8 요약

006장. 이동 의미 체계와 enable_if<>
__6.1 완벽한 전달
__6.2 특수 멤버 함수 템플릿
__6.3 enable_if<>로 템플릿 비활성화
__6.4 enable_if<> 사용
__6.5 enable_if<> 표현식을 간단하게 만드는 개념 사용
__6.6 요약

007장. 값으로 전달 또는 참조로 전달
__7.1 값으로 전달
__7.2 참조자로 전달
__7.3 std::ref()와 std::cref() 사용
__7.4 문자열 리터럴과 원시 배열
__7.5 반환 값 다루기
__7.6 템플릿 파라미터 선언 추천 방식
__7.7 요약

008장. 컴파일 과정 프로그래밍
__8.1 템플릿 메타프로그래밍
__8.2 constexpr로 계산
__8.3 부분 특수화로 실행 경로 선택
__8.4 SFINAE(치환 실패는 오류가 아니다)
__8.5 컴파일 과정 if
__8.6 요약

009장. 템플릿 실제 사용
__9.1 포함 모델
__9.2 템플릿과 인라인

010장. 기본 템플릿 용어
__10.1 ‘클래스 템플릿’인가, ‘템플릿 클래스’인가?
__10.2 치환, 인스턴스화, 특수화
__10.3 선언과 정의
__10.4 단정의 법칙
__10.5 템플릿 인자와 템플릿 파라미터
__10.6 요약

011장. 일반 라이브러리
__11.1 호출 가능한 객체
__11.2 일반 라이브러리를 구현에 사용되는 기타 유틸리티
__11.3 임시 값 완벽히 전달
__11.4 참조자를 템플릿 파라미터로 쓰기
__11.5 평가 지연시키기
__11.6 일반 라이브러리를 작성할 때 고려해야 할 것
__11.7 요약

2부. 템플릿 상세 설명

012장. 템플릿 기초 원리 상세 학습
__12.1 파라미터화된 선언
__12.2 템플릿 파라미터
__12.3 템플릿 인자
__12.4 가변 템플릿
__12.5 프렌드
__12.6 후기

013장. 템플릿에서 이름
__13.1 이름 분류법
__13.2 이름 룩업
__13.3 템플릿 파싱
__13.4 상속과 클래스 템플릿
__13.5 후기

014장. 인스턴스화
__14.1 주문형 인스턴스화
__14.2 게으른 인스턴스화
__14.5 명시적 인스턴스화
__14.6 컴파일 과정 if문
__14.7 표준 라이브러리내에서
__14.8 후기

015장. 템플릿 인자 연역
__15.1 연역 과정
__15.2 연역된 문맥
__15.3 특별 연역 상황
__15.4 초기화자 목록
__15.5 파라미터 꾸러미
__15.6 rvalue 참조자
__15.7 SFINAE
__15.8 연역의 한계
__15.9 명시적 함수 템플릿 인자
__15.10 초기화자와 표현식에서의 연역
__15.11 별칭 템플릿
__15.12 클래스 템플릿 인자 연역
__15.13 후기

016장. 특수화와 오버로딩
__16.1 ‘일반적인 코드’가 별로 좋지 않을 때
__16.2 함수 템플릿 오버로딩
__16.3 명시적 특수화
__16.4 부분 클래스 템플릿 특수화
__16.5 부분 변수 템플릿 특수화
__16.6 후기

017장. 앞으로 나아갈 방향
__17.1 완화된 typename 법칙
__17.2 일반화된 형식이 아닌 템플릿 파라미터
__17.3 함수 템플릿의 부분 특수화
__17.4 이름 붙여진 템플릿 인자
__17.5 클래스 템플릿 오버로딩
__17.6 끝나지 않은 꾸러미 확장 연역
__17.7 void의 정규화
__17.8 템플릿을 위한 형식 검사
__17.9 반영 메타프로그래밍
__17.10 꾸러미 설비
__17.11 모듈

3부. 템플릿과 설계

018장. 템플릿의 다형적 능력
__18.1 동적 다형성
__18.2 정적 다형성
__18.3 동적과 정적 다형성
__18.4 개념 사용
__18.5 설계 패턴의 새로운 형태
__18.6 일반 프로그래밍
__18.7 후기

019장. 특질 구현
__19.1 예제: 수열 덧셈
__19.2 특질 및 정책과 정책 클래스
__19.3 형식 함수
__19.4 SFINAE 기반 특질
__19.5 IsConvertibleT
__19.6 멤버 검출
__19.7 기타 특질 기법
__19.8 형식 분류
__19.9 정책 특질
__19.10 표준 라이브러리에서
__19.11 후기

020장. 형식 속성 오버로딩
__20.1 알고리즘 특수화
__20.2 태그 디스패치
__20.3 함수 템플릿 활성화/비활성화
__20.4 클래스 특수화
__20.5 인스턴스화 안전 템플릿
__20.6 표준 라이브러리
__20.7 후기

021장. 템플릿과 상속
__21.1 빈 기본 클래스 최적화(EBCO)
__21.2 묘하게 되풀이되는 템플릿 패턴(CRTP)
__21.3 믹스인
__21.4 이름 붙여진 템플릿 인자
__21.5 후기

022장. 정적과 동적 다형성 사이 잇기
__22.1 함수 객체, 포인터와 std::function<>
__22.2 일반화된 함수 포인터
__22.3 브리지 인터페이스
__22.4 형식 삭제
__22.5 선택적 사이 잇기
__22.6 성능 고려
__22.7 후기

023장. 메타프로그래밍
__23.1 현대 C++ 메타프로그래밍의 현 상태
__23.2 반영 메타프로그래밍의 중요성
__23.3 재귀 인스턴스화의 비용
__23.4 계산 완전성
__23.5 재귀 인스턴스화와 재귀 템플릿 인자
__23.6 열거형 값과 정적 상수
__23.7 후기

024장. 형식 목록
__24.1 형식 목록 해부
__24.2 형식 목록 알고리즘
__24.3 형식이 아닌 형식 목록
__24.4 꾸러미 확장을 사용한 알고리즘 최적화
__24.5 cons-스타일 형식 목록
__24.6 후기

025장. 튜플
__25.1 기본 튜플 설계
__25.2 기본 튜플 연산
__25.3 튜플 알고리즘
__25.4 튜플 확장
__25.5 튜플 최적화
__25.6 튜플 첨자
__25.7 후기

026장. 구별 공용체
__26.1 저장소
__26.2 설계
__26.3 값 쿼리와 추출
__26.4 요소 초기화, 할당과 소멸
__26.5 방문자
__26.6 변이 값 초기화와 할당
__26.7 후기

027장. 표현식 템플릿
__27.1 임시 루프와 루프 분할
__27.2 템플릿 인자에 표현식 표현
__27.3 표현식 템플릿의 성능과 한계
__27.4 후기

028장. 템플릿 디버깅
__28.1 얕은 인스턴스화
__28.2 정적 단언문
__28.3 원형
__28.4 추적자
__28.5 오라클
__28.6 후기

부록A. 단정의 법칙
__A.1 번역 단위
__A.2 선언과 정의
__A.3 상세한 단정의 법칙

부록B. 값 카테고리
__B.1 전통적인 lvalue와 rvalue
__B.2 C++11 이후의 값 카테고리
__B.3 decltype으로 값 카테고리 검사
__B.4 참조자형

부록C. 오버로딩 해석
__C.1 언제 오버로딩 해석이 적용되는가?
__C.2 간략화된 오버로딩 해석
__C.3 오버로딩 세부 사항

부록D. 표준 형식 유틸리티
__D.1 형식 특질 사용
__D.2 기본과 합성 형식 카테고리
__D.4 형식 생성
__D.5 기타 특질
__D.6 형식 특질 결합
__D.7 기타 유틸리티

부록E. 개념
__E.1 개념 사용
__E.2 개념 정의
__E.3 제약 조건 오버로딩
__E.4 개념 팁

출판사 서평

이 책에서 많은 것을 얻고 싶다면 먼저 C++에 대해 알아야 한다. 특별히 C++ 언어의 일부 특징에 대해 상세하게 설명하기도 했지만, 언어의 기초 자체에 대해서는 설명하지 않는다. 독자는 클래스와 상속에 대해 익숙해야 하며, C++ 표준 라이브러리가 제공하는 입출력 스트림과 컨테이너 같은 컴포넌트를 사용하는 C++ 프로그램을 작성할 수 있어야 한다. auto, decltype, 이동 의미 체계나 람다와 같은 ‘현대 C++’의 기본 특성에도 익숙해야 한다.
전문가와 중급자 수준 정도의 프로그래머도 이 책을 유용하게 사용할 수 있... 더보기

북로그 리뷰 (0) 쓰러가기

도서 구매 후 리뷰를 작성하시면 통합포인트를 드립니다.
결제 90일 이내 작성 시 300원 / 발송 후 5일 이내 작성시 400원 / 이 상품의 첫 리뷰 작성 시 500원
(포인트는 작성 후 다음 날 적립되며, 도서 발송 전 작성 시에는 발송 후 익일에 적립됩니다.
외서/eBook/음반/DVD/GIFT 및 잡지 상품 제외)
안내
  • 해당도서의 리뷰가 없습니다.

Klover 평점/리뷰 (0)

문장수집 (0) 문장수집 쓰기 나의 독서기록 보기
※구매도서의 문장수집을 기록하면 통합포인트 적립 안내

교환/반품/품절안내

※ 상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

교환/반품/품절안내
반품/교환방법 마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환신청 ,
[1:1상담>반품/교환/환불] 또는 고객센터 (1544-1900)

※ 오픈마켓, 해외배송주문, 기프트 주문시 [1:1상담>반품/교환/환불]
    또는 고객센터 (1544-1900)
반품/교환가능 기간 변심반품의 경우 수령 후 7일 이내,
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
반품/교환비용 변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
반품/교환 불가 사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등
  • 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에
    해당되는 경우
(1) 해외주문도서 : 이용자의 요청에 의한 개인주문상품으로 단순변심 및 착오로 인한 취소/교환/반품 시 ‘해외주문 반품/취소 수수료’ 고객 부담 (해외주문 반품/취소 수수료 : ①양서-판매정가의 12%, ②일서-판매정가의 7%를 적용)
상품 품절 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는
이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은
    소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의
    소비자 보호에 관한 법률에 따라 처리함

이 분야의 베스트

더보기+

이 분야의 신간

더보기+

바로가기

  • 우측 확장형 배너 2
  • 우측 확장형 배너 2

최근 본 상품