C++テンプレートメタプログラミング(玉井 浩 玉井 浩 デビット・エブラハムズ アレクセイ・グルトヴォイ)|翔泳社の本
  1. ホーム >
  2. 書籍 >
  3. C++テンプレートメタプログラミング

C++テンプレートメタプログラミング

翻訳
原著


形式:
書籍
発売日:
ISBN:
9784798120393
定価:
4,180(本体3,800円+税10%)
仕様:
B5変・384ページ
カテゴリ:
プログラミング・開発
キーワード:
#プログラミング,#開発環境,#開発手法,#Web・アプリ開発

プログラムコードの圧縮とコーディングコストの軽減を実現! 知られざるC++の真の姿

メタプログラミングとは「プログラムをプログラミングする」ことです。メタプログラミングにより新しいコードをプログラミングシステムが生成するよう設計しておくことができます。本書は、C++テンプレートメタプログラミングの「全貌」とその実践的なツールの両方を解説する初の専門書です。メタプログラミングとは何か、なぜそれが重要なのか、そしてC++の強力なメタプログラミング言語がどのように創り出されるのかを明らかにします。また、C++テンプレートメタプログラミングの強力なオープンソースフレームワークであるBoostメタプログラミングライブラリも紹介。これはよく知られているSTLのイディオムに基づいており、メタプログラミングを簡単で表現力豊かで、かつ楽しいものにしてくれます。

はじめに 1.1  第一歩 1.2  ではメタプログラムとは何か? 1.3  ホスト言語におけるメタプログラミング 1.4  C++におけるメタプログラミング 1.5  なぜメタプログラミングするのか? 1.6  どういうときにメタプログラミングを行うのか? 2.1  型付け 2.2  メタ関数 2.3  数値メタ関数 2.4  コンパイル時に選択する 2.5  Boost Type Traits ライブラリ概観 2.6  アーギュメントなしメタ関数 2.7  メタ関数定義 2.8  歴 史 2.9  詳 細 3.1  次元解析 3.2  高階メタ関数 3.3  プレースホルダの扱い 3.4  さらにラムダの能力について 3.5  Lambdaの詳細 3.6  詳 細 4.1  bool型ラッパーと演算 4.2  整数ラッパーと演算 5.1  コンセプト 5.2  列とアルゴリズム 5.3  反復子 5.4  反復子に関するコンセプト 5.5  列に関するコンセプト 5.6  列の同等性 5.7  列固有の操作 5.8  列クラス 5.9  整数列ラッパー 5.10  列の派生 5.11  自分で列を作ること 5.12  詳 細 6.1  アルゴリズム,イディオム,再利用,抽象 6.2  MPLのアルゴリズム 6.3  インサータ 6.4  基本的列アルゴリズム 6.5  問い合わせアルゴリズム 6.6  列構築アルゴリズム 6.7  自分でアルゴリズムを作ること 6.8  詳 細 7.1  列をいくつか 7.2  ビューコンセプト 7.3  反復子アダプタ 7.4  自分でビューを作ること 7.5  歴 史 8.1  エラーデバッグ物語 8.2  エラー解析のためのツールの使用 8.3  あえてエラーメッセージを出させる 8.4  歴 史 8.5  詳 細 9.1  for_each 9.2  実装の選択 9.3  オブジェクトジェネレータ 9.4  構造選択 9.5  クラス構成 9.6  テンプレートアーギュメントとしての(メンバ)関数ポインタ 9.7  型消去 9.8  奇妙に再現するテンプレートパターン 9.9  オーバロード集合を明示的に管理する 9.10  sizeofトリック 9.11  まとめ 10.1  小言語は・・・ 10.2  ・・・大いに助けとなる 10.3  DSLをひっくり返す 10.4  ホスト言語としてのC++ 10.5  Blitz++と式テンプレート 10.6  汎用DSEL 10.7  Boost Spiritライブラリ 10.8  まとめ 11.1  有限状態機械 11.2  フレームワーク設計の目標 11.3  フレームワークインタフェースの基礎 11.4  DSLの選択 11.5  実 装 11.6  分 析 11.7  言語の行方 A.1  動機付け A.2  プリプロセッサの基本的抽象 A.3  Preprocessorライブラリの構造 A.4  Preprocessorライブラリの抽象 B.1  問題点 C.1  計算モデル C.2  コンパイル時間を制御する C.3  テスト
  B.2  規 則

  A.5  演習問題

  11.8  演習問題



  10.9  演習問題

  9.12  演習問題

  8.6  演習問題

  7.6  演習問題

  6.9  演習問題

  5.13  演習問題

  4.3  演習問題

  3.7  演習問題

  2.10  演習問題

  1.7  なぜメタプログラミングライブラリが要るのか?

  付録D  MPL可搬性のまとめ

 

 

索引

本書は付属データの提供はございません。

お問い合わせ

内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。

正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。

利用許諾に関するお問い合わせ

本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。

追加情報はありません。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

対象の書籍は正誤表がありません。

最終更新日:2012年05月28日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 015
本文2行目
Iterator::valueにアクセスする代わりに,
Iterator::value_typeにアクセスする代わりに,
2012.05.28
1刷 016
8行目
iterator_traitsの::valueに最初に
iterator_traitsの::value_typeに最初に
2012.05.28

感想・レビュー

kaizen@名古屋de朝活読書会 さん

2018-06-25

#説明歌 直接法遠回りする近道かコンパイル時に選択するの

Q さん

2021-04-19

C++言語のテンプレートという機能を使ってコンパイル時に静的な計算をする本。依存型などコンパイル時に決定されるべき計算をC++を使って作れないかと考えて手に取った。つまるところBoostのMPLというライブラリを使うのが今は正道なようだ。しかし言語が静的な計算をもともと意図して設計されていないために記述が冗長に見える点もめだったように思う。依存型のような静的な計算を実運用するのにC++がふさわしい言語なのかは疑問が残った。C++しか使えない環境下においては本書は道標になるだろう。