More C++ Idioms
序文
編集
Stroustrup 氏の言は真実である。なぜなら熟練者は言語のイディオムに深く精通しているからである。プログラマが理解するイディオムの増加に従って、言語は彼あるいは彼女にとってよりフレンドリーになる。この open content book の目的はほどほどに C++ に精通しているプログラマに対して現代的な C++ のイディオムを提示し、C++ をよりずっとフレンドリーに感じるレベルにまで知識を引き上げる助けと成る事である。本書は熟練した C++ プログラマが C++ を使ってプログラミングや設計を行う際に用いる事の多い再利用可能なイディオムの網羅的なカタログと成るよう意図されている。これは、それらのテクニックや語彙をひとまとめにしようという取り組みである。本書は、イディオムを「名前-意図-動機-解法」という簡潔で速習しやすい規則的なフォーマットで記述されている。その性質上、イディオムは何回も C++ コミュニティや出版物の中に現れる傾向にある。可能であればオリジナルの原点を参照するよう努力を払ったが、参照が不完全であったり誤りであることを見つけたら、自由に示唆してもらうか改善を施して欲しい。 C++ の知識の再利用可能な断片をカタログ化しようという地平は拓かれた(GoF がオブジェクト指向パターンに対して行ったように)。ここでの目標は、まずは現代的な C++ のイディオムの網羅的なカタログを構築し、次いでちょうどパターンランゲージのようにイディオムランゲージに進化させることである。最後に、この本の内容は GNU Free Documentation License の下で再配布可能である。 対象とする読者: C++ と関連するパラダイムについてほどほどのレベルの知識を持つ人全て |
追加情報
編集著者リスト | 著者向けガイドライン | 翻訳の方針
目次
編集:本文が少しあります。
:本文が半分ほどあります。
: 間もなく完成します。
: 一応完成しています。
注意: 各イディオムの別名は括弧内に列挙されている。
- Adapter Template
- Address Of
- 代数的階層(Algebraic Hierarchy)
- Attach by Initialization
- Barton-Nackman トリック(Barton-Nackman trick)
- メンバによる基本クラスの初期化(Base-from-Member)
- Boost mutant
- 初期化中の仮想関数呼び出し(Calling Virtuals During Initialization)
- 能力照会(Capability Query)
- チェック付きdelete(Checked delete)
- 空にして最小化(Clear-and-minimize)
- メンバテンプレートによる型変換(Coercion by Member Template)
- コンパイル時制御構造(Compile Time Control Structures)
- Computational Constructor
- 具象データ型(Concrete Data Type)
- Const auto_ptr
- 初回使用時生成(Construct On First Use)
- 生成の追跡(Construction Tracker)
- コピーして swap(Copy-and-swap)
- Copy-on-write
- 計数ボディ(侵襲的参照回数計測)(Counted Body (intrusive reference counting))
- 奇妙に再帰したテンプレートパターン(Curiously Recurring Template Pattern)
- 独立計数ボディ(非侵襲的参照回数計測)(Detached Counted Body (non-intrusive reference couting))
- Empty Base Optimization
- Emulated Exception
- enable-if
- 封筒・便箋(Envelope Letter)
- 消去・削除(Erase-Remove)
- Examplar
- ポインタ参照前後での実行(Execute-Around Pointer)
- Export Guard Macro
- 式テンプレート(Expression-template)
- Fake Vtable
- 高速 Pimpl(Fast Pimpl)
- Final Class
- Forward Declare First
- Free Function Allocators
- Friendship and the Attorney-Client
- Function Object
- 汎用コンテナ作成用イディオム(Generic Container Idioms)
- Pimpl (ハンドル・ボディ(Handle Body), コンパイル防壁(Compilation Firewall), チェシャ猫(Cheshire Cat))
- インクルードガードマクロ(Include Guard Macro)
- inline ガードマクロ(Inline Guard Macro)
- 内部クラス(Inner Class)
- 整数から型(Int-To-Type)
- インタフェースクラス(Interface Class)
- 反復子対(Iterator Pair)
- friend 関数の生成(Making New Friends)
- メタ関数(Metafunction)
- 所有権移動コンストラクタ(Move Constructor)
- 複文マクロ(Multi-statement Macro)
- Multiple Member Initialization
- 名前付きコンストラクタ(Named Constructor)
- Named External Argument
- Named Loop
- 名前付きパラメータ(Named Parameter)
- 名前付きテンプレートパラメータ(Named Template Parameters)
- 小粋なカウンタ(Nifty Counter) (シュワルツカウンタ(Schwarz Counter))
- コピー禁止ミックスイン(Non-copyable Mixin)
- Non-member get
- 非メンバ非フレンド関数(Non-member Non-friend Function)
- throw しない swap(Non-throwing swap)
- 非仮想インタフェース(Non-Virtual Interface) (public な多重定義非仮想関数による protected な非多重定義仮想関数の呼び出し(Public Overloaded Non-Virtuals Call Protected Non-Overloaded Virtuals))
- nullptr
- オブジェクト生成器(Object Generator)
- Object Template
- Overload Set Creation
- パラメータ化された基本クラス(Parameterized Base Class) (パラメータ化された継承(Parameterized Inheritance))
- メタ関数ラッパ(Meta-function wrapper)
- ポリシーの複製(Policy Clone) (メタ関数ラッパ(Meta-function wrapper))
- ポリシーに基づくクラス設計(Policy-based Class Design)
- 多態的例外(Polymorphic Exception)
- Recursive Type Composition
- リソース獲得は初期化である(Resource Acquisition Is Initialization) (RAII, オブジェクト生存期間前後での実行(Execute-Around Object), スコープ内ロック(Scoped Locking))
- リソースの返値(Resource Return)
- Return Type Resolver
- 実行時の静的初期化順序に関するイディオム(Runtime Static Initialization Order Idioms)
- 安全な bool(Safe bool)
- スコープ防壁(Scope Guard)
- 置き換え失敗はエラーにあらず(Substitution Failure Is Not An Error(SFINAE))
- Shortening Long Template Names
- 縮めて合わせる(Shrink-to-fit)
- Small Object Optimization
- スマートポインタ(Smart Pointer)
- Storage Class Tracker
- タグによる分配(Tag Dispatching)
- Temporary Base Class
- The result_of technique
- 薄いテンプレート(Thin Template)
- Trailing Parens for Method Chaining for Named parameter
- 特性(Traits)
- Type Erasure
- 型生成器(Type Generator) (テンプレート化された typedef(Templated Typedef))
- Type Safe Enum
- Type Selection
- 仮想コンストラクタ(Virtual Constructor)
- 仮想フレンド関数(Virtual Friend Function)