本書について
スコープおよびリンケージ
スコープ
ローカル・スコープ
関数スコープ
関数プロトタイプ・スコープ
グローバル・スコープ
クラス・スコープ
ID のネーム・スペース
名前の隠蔽
プログラム・リンケージ
内部結合
外部結合
リンケージなし
リンケージ指定 -- C++ 以外のプログラムへのリンク
ネーム・マングリング
字句エレメント
トークン
区切り子
代替トークン
ソース・プログラムの文字セット
エスケープ・シーケンス
ユニコード規格
3 文字表記
マルチバイト文字
コメント
ID
予約済みの ID
ID での大/小文字の区別と特殊文字
事前定義済みの ID
キーワード
言語拡張用のキーワード
演算子および区切り子の代替表記
リテラル
ブール・リテラル
整数リテラル
10 進整数リテラル
16 進整数リテラル
8 進整数リテラル
浮動小数点リテラル
16 進浮動小数点定数
複素数リテラル
文字リテラル
ストリング・リテラル
複合リテラル
ベクトル・リテラル
宣言
宣言概要
変数属性
aligned 変数属性
init_priority 変数属性
mode 変数属性
packed 変数属性
weak 変数属性
__align 指定子
仮定義
オブジェクト
ストレージ・クラス指定子
auto ストレージ・クラス指定子
extern ストレージ・クラス指定子
mutable ストレージ・クラス指定子
register ストレージ・クラス指定子
static ストレージ・クラス指定子
typedef
型指定子
型名
型属性
型属性 aligned
型属性 packed
型属性 transparent_union
互換型
単純型指定子
ブール変数
char および wchar_t 型指定子
wchar_t 型指定子
浮動小数点変数
整変数
void 型
複合型
構造体
構造体の宣言および定義
構造変数の定義
構造体の初期化
同じステートメントでの構造体型および変数の宣言
構造体位置合わせ
構造体でのビット・フィールドの宣言および使用
構造体を使用したプログラムの例
共用体
共用体の宣言
共用体変数の定義
無名共用体
共用体の例
列挙
列挙データ型の宣言
列挙型定数
列挙変数の定義
列挙型および列挙オブジェクトの定義
列挙を使用したプログラムの例
複素数型
型修飾子
const 型修飾子
volatile 型修飾子
restrict 型修飾子
asm ステートメント
不完全型
AltiVec 型
宣言子
初期化指定子
ポインター
ポインターの宣言
ポインターの割り当て
ポインターの初期化
ポインターの使用
ポインター演算
ポインターを使用したプログラムの例
配列
配列の宣言
可変長配列
配列の初期化
指定初期化指定子を使用した配列の初期化
配列を使用したプログラムの例
関数指定子
参照
参照の初期化
式と演算子
演算子優先順位と結合順序
式と優先順位の例
左辺値と右辺値
1 次式
ID 式
整数定数式
括弧で囲んだ式 ( )
C++ スコープ・レゾリューション演算子 ::
後置式
関数呼び出し演算子 ( )
配列添え字演算子 [ ]
ドット演算子 .
矢印演算子 ->
typeid 演算子
static_cast 演算子
reinterpret_cast 演算子
const_cast 演算子
dynamic_cast 演算子
単項式
増分 ++
減分 --
単項正 +
単項負 -
論理否定 !
ビット単位否定 ~
アドレス &
間接 *
alignof 演算子
sizeof 演算子
typeof 演算子
ラベル値演算子 &&
C++ の new 演算子
new 演算子を使用して作成されたオブジェクトの初期化
set_new_handler() -- new 障害のための振る舞いのセット
C++ の delete 演算子
キャスト式
共用体型へのキャスト
2 項式
乗算 *
除法 /
剰余 %
加法 +
減法 -
ビット単位左シフトと右シフト << >>
関係 < > <= >=
等価 == !=
ビット単位 AND &
ビット単位排他 OR ^
ビット単位包含 OR |
論理 AND &&
論理 OR ||
メンバーを指す C++ ポインター演算子 ( .* ->*)
条件式
C の条件式の型
C++ の条件式の型
条件式の例
代入式
単純代入 =
複合代入
コンマ式
C++ の throw 式
暗黙の型変換
整数および浮動小数点拡張
標準の型変換
左辺値から右辺値への変換
ブール変換
整数変換
浮動小数点の型変換
ポインター型変換
参照変換
メンバーを指すポインターの型変換
修飾変換
関数引き数変換
その他の変換
算術変換
explicit キーワード
関数
C 関数に対する C++ の拡張
関数宣言
C++ 関数の宣言
複数の関数宣言
関数宣言内のパラメーター名
関数属性
alias 関数属性
always_inline 関数属性
const 関数属性
constructor および destructor 関数属性
format 関数属性
format_arg 関数属性
noinline 関数属性
noreturn 関数属性
pure 関数属性
section 関数属性
weak 関数属性
関数宣言の例
関数定義
省略符号および void
関数定義の例
main() 関数
main への引き数
main への引き数の例
関数呼び出しおよび引き数の受け渡し
値による引き数の受け渡し
参照による引き数の受け渡し
C++ 関数におけるデフォルト引き数
デフォルト引き数に関する制約事項
デフォルト引き数の評価
関数からの戻り値
戻りの型としての参照の使用
割り振り関数および割り振り解除関数
関数へのポインター
インライン関数
ネストされた関数
ステートメント
ラベル
ローカルに宣言されたラベル
値としてのラベル
式ステートメント
C++ でのあいまいなステートメントの解決
ブロック・ステートメント
ステートメント式
if 文
switch 文
while ステートメント
do ステートメント
for ステートメント
break ステートメント
continue ステートメント
return ステートメント
戻り式の値および関数値
goto 文
計算済み goto
ヌル・ステートメント
プリプロセッサー・ディレクティブ
プリプロセッサーの概要
プリプロセッサー・ディレクティブの形式
マクロの定義および展開 (#define)
オブジェクト類似マクロ
関数類似マクロ
Variadic マクロ拡張
マクロ名のスコープ (#undef)
# 演算子
## 演算子とのマクロ連結
プリプロセッサーの Error ディレクティブ (#error)
プリプロセッサーの warning ディレクティブ (#warning)
ファイルのインクルード (#include)
特殊化されたファイルのインクルード (#include_next)
ISO 規格事前定義マクロの名前
条件付きコンパイル・ディレクティブ
#if、#elif
#ifdef
#ifndef
#else
#endif
条件付きコンパイル・ディレクティブの例
行制御 (#line)
ヌル・ディレクティブ (#)
プラグマ・ディレクティブ (#pragma)
標準プラグマ
_Pragma 演算子
ネーム・スペース
ネーム・スペースの定義
ネーム・スペースの宣言
ネーム・スペース別名の作成
ネストされたネーム・スペースの別名の作成
ネーム・スペースの拡張
ネーム・スペースおよび多重定義
名前なしネーム・スペース
ネーム・スペース・メンバー定義
ネーム・スペースおよびフレンド
using ディレクティブ
using 宣言およびネーム・スペース
明示的アクセス
多重定義
関数の多重定義
多重定義された関数の制約事項
演算子の多重定義
単項演算子の多重定義
増分と減分の多重定義
2 項演算子の多重定義
代入の多重定義
関数呼び出しの多重定義
添え字の多重定義
クラス・メンバー・アクセスの多重定義
多重定義解決
暗黙的変換シーケンス
多重定義された関数のアドレスの解決
クラス
クラス・タイプの宣言
クラス・オブジェクトの使用
クラスと構造体
クラス名のスコープ
不完全なクラス宣言
ネスト・クラス
ローカル・クラス
ローカル型名
クラス・メンバーとフレンド
クラス・メンバー・リスト
データ・メンバー
メンバー関数
const および volatile メンバー関数
仮想メンバー関数
特殊なメンバー関数
メンバー・スコープ
メンバーへのポインター
this ポインター
静的メンバー
静的メンバーでのクラス・アクセス演算子の使用
静的データ・メンバー
静的メンバー関数
メンバー・アクセス
フレンド
フレンドのスコープ
フレンドのアクセス
継承
派生
継承されたメンバー・アクセス
protected メンバー
基底クラス・メンバーのアクセス制御
using 宣言およびクラス・メンバー
基底クラスおよび派生クラスからのメンバー関数の多重定義
クラス・メンバーのアクセスの変更
多重継承
仮想基底クラス
マルチアクセス
あいまいな基底クラス
仮想関数
あいまいな仮想関数呼び出し
仮想関数のアクセス
抽象クラス
特殊なメンバー関数
コンストラクターとデストラクターの概要
コンストラクター
デフォルト・コンストラクター
コンストラクターでの明示的初期化
基底クラスおよびメンバーの初期化
派生クラス・オブジェクトの構築順序
デストラクター
フリー・ストア
一時オブジェクト
ユーザー定義の型変換
コンストラクターによる変換
型変換関数
コピー・コンストラクター
コピー代入演算子
テンプレート
テンプレート・パラメーター
「型」テンプレート・パラメーター
「非型」テンプレート・パラメーター
「テンプレート」テンプレート・パラメーター
テンプレート・パラメーターのデフォルトの引き数
テンプレート引き数
テンプレート型引き数
テンプレート非型引き数
「テンプレート」テンプレート引き数
クラス・テンプレート
クラス・テンプレートの宣言と定義
静的データ・メンバーとテンプレート
クラス・テンプレートのメンバー関数
フレンドとテンプレート
関数テンプレート
テンプレート引き数の推定
「型」テンプレート引き数の推定
非型テンプレート引き数の推定
関数テンプレートの多重定義
関数テンプレートの部分選択
テンプレートのインスタンス化
暗黙のインスタンス化
明示的インスタンス生成
テンプレート特殊化
明示的特殊化
明示的特殊化の定義と宣言
明示的特殊化とスコープ
明示的特殊化のクラス・メンバー
関数テンプレートの明示的特殊化
クラス・テンプレートのメンバーの明示的特殊化
部分的特殊化
部分的特殊化のテンプレート・パラメーターと引き数リスト
クラス・テンプレートの部分的特殊化のマッチング
名前のバインディングおよび従属名
typename キーワード
修飾子としてのキーワード・テンプレート
例外処理
try キーワード
ネストされた try ブロック
catch ブロック
関数 try ブロック・ハンドラー
catch ブロックの引き数
スローされた例外とキャッチされた例外とのマッチング
キャッチの順序
throw 式
例外の rethrow
スタック・アンワインド
例外の指定
特殊な例外処理関数
unexpected()
terminate()
set_unexpected() と set_terminate()
例外処理関数の使用例
付録 A. IBM C 言語拡張機能
直交拡張機能
個々のオプション・コントロールが備わった既存の IBM C 拡張機能
IBM C 拡張機能: C89 の拡張機能としての C99 フィーチャー
GNU C に関連する IBM C 拡張機能
非直交拡張機能
個々のオプション・コントロールが備わった既存の IBM C 拡張機能
IBM C 拡張機能: C89 の拡張機能としての C99 フィーチャー
GNU C に関連する IBM C 拡張機能
AltiVec プログラミング・インターフェース・サポートの拡張機能
付録 B. IBM C++ 言語拡張機能
直交拡張機能
C99 との互換性のための IBM C++ 拡張機能
GNU C に関連する IBM C++ 拡張機能
GNU C++ に関連する IBM C++ 拡張機能
非直交拡張機能
C99 との互換性のための IBM C++ 拡張機能
GNU C に関連する IBM C++ 拡張機能
付録 C. AltiVec データ型およびリテラル
Vector データ型
ベクトル・リテラル
索引
