テンプレートの生成基準

提供: RAD Studio
移動先: 案内検索

コンパイラ テンプレート スイッチ:インデックス への移動

BCC32 および BCCOSX コンパイラは、テンプレート インスタンス用の次のメソッドを生成します:

  • 実際に使用されるメソッド
  • インスタンスの仮想メソッド
  • 明示的にインスタンス化されたクラスのすべてのメソッド

この動作の利点は、テンプレートの使用頻度によっては、最終的にオブジェクト ファイル、ライブラリ、実行可能ファイルが大幅に小さくなることです。

任意で、-J スイッチを使用して、すべてのメソッドを生成することができます(「テンプレート用コンパイラ スイッチ」と「C++ コンパイラ」を参照)。

また、ISO/ANSI C++ 標準に規定されている明示的なテンプレート インスタンス化の構文を使って、テンプレート インスタンスのすべての非インライン メソッドを強制的に生成することもできます。 構文は次のとおりです:

template class classname<template parameter>;

次のような STL(標準テンプレート ライブラリ)の例では、ユーザーのコードで参照されるかどうかに関係なく、list<char> クラスのすべての非インライン メソッドを生成するようにコンパイラに指示します。

template class list<char>

また、以下のように、テンプレート クラスの単一のメソッドまたは単一の静的データ メンバを明示的にインスタンス化することもできます。つまり、そのメソッドは、たとえ使用されなくても、.OBJ ファイルに生成されるということです。

template void classname <template parameter>:: methodname ();

関連項目