JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.2: C++ ユーザーズガイド
search filter icon
search icon

ドキュメントの情報

はじめに

パート I C++ コンパイラ

1.  C++ コンパイラの紹介

2.  C++ コンパイラの使用方法

3.  C++ コンパイラオプションの使い方

パート II C++ プログラムの作成

4.  言語拡張

5.  プログラムの編成

6.  テンプレートの作成と使用

6.1 関数テンプレート

6.1.1 関数テンプレートの宣言

6.1.2 関数テンプレートの定義

6.1.3 関数テンプレートの使用

6.2 クラステンプレート

6.2.1 クラステンプレートの宣言

6.2.2 クラステンプレートの定義

6.2.3 クラステンプレートメンバーの定義

6.2.3.1 関数メンバーの定義

6.2.3.2 静的データメンバーの定義

6.2.4 クラステンプレートの使用

6.3 テンプレートのインスタンス化

6.3.1 テンプレートの暗黙的インタンス化

6.3.2 テンプレートの明示的インスタンス化

6.3.2.1 テンプレート関数の明示的インスタンス化

6.3.2.2 テンプレートクラスの明示的インスタンス化

6.3.2.3 テンプレートクラス関数メンバーの明示的インスタンス化

6.3.2.4 テンプレートクラスの静的データメンバーの明示的インスタンス化

6.4 テンプレートの編成

6.5 デフォルトのテンプレートパラメータ

6.6 テンプレートの特殊化

6.6.1 テンプレートの特殊化宣言

6.6.2 テンプレートの特殊化定義

6.6.3 テンプレートの特殊化の使用とインスタンス化

6.6.4 部分特殊化

6.7 テンプレートの問題

6.7.1 非局所型名前の解決とインスタンス化

6.7.2 テンプレート引数としての局所型

6.7.3 テンプレート関数のフレンド宣言

6.7.4 テンプレート定義内での修飾名の使用

6.7.5 テンプレート名の入れ子

6.7.6 静的変数や静的関数の参照

6.7.7 テンプレートを使用して複数のプログラムを同一ディレクトリに構築する

7.  テンプレートのコンパイル

8.  例外処理

9.  プログラムパフォーマンスの改善

10.  マルチスレッドプログラムの構築

パート III ライブラリ

11.  ライブラリの使用

12.  C++ 標準ライブラリの使用

13.  従来の iostream ライブラリの使用

14.  複素数演算ライブラリの使用

15.  ライブラリの構築

パート IV 付録

A.  C++ コンパイラオプション

B.  プラグマ

用語集

索引

6.4 テンプレートの編成

テンプレートは、 入れ子にして使用できます。これは、標準 C++ ライブラリで行う場合のように、一般的なデータ構造に関する汎用関数を定義する場合に特に便利です。たとえば、テンプレート配列クラスに関して、テンプレートのソート関数を次のように宣言することができます。

template <class Elem> void sort(Array<Elem>);

また、次のように定義することができます。

template <class Elem> void sort(Array<Elem> store)
    {int num_elems = store.GetSize();
      for (int i = 0; i < num_elems-1; i++)
          for (int j = i+1; j < num_elems; j++)
              if (store[j-1] > store[j])
                  {Elem temp = store[j];
                    store[j] = store[j-1];
                    store[j-1] = temp;}}

前述の例は、事前に宣言された Array クラステンプレートのオブジェクトに関するソート関数を定義しています。次の例はソート関数の実際の使用例を示しています。

Array<int> int_array(100);   // construct an array of ints
sort(int_array);             // sort it