1. ホーム
  2. c++

[解決済み] 明示的なテンプレートのインスタンス化 - どのような場合に使用するのですか?

2022-08-25 15:51:40

質問

数週間の休暇の後、私はこの本でテンプレートの知識を広げ、拡張しようとしています。 テンプレート - 完全ガイド

実際にはそのようなメカニズムに問題はないのですが、この機能を使用したい、または使用したい状況を想像できません。もし誰かがそれを説明してくれるなら、私はもっと感謝します。

どのように解決するのですか?

から直接コピーした https://docs.microsoft.com/en-us/cpp/cpp/explicit-instantiation :

明示的なインスタンス化を使用すると、テンプレート化されたクラスや関数を実際にコードで使用することなくインスタンス化することができます。なぜなら を使用するライブラリ (.lib) ファイルを作成するときに便利です。 を使用するライブラリ(.lib)ファイルを作成するときに便利なので、インスタンス化されていないテンプレート定義はオブジェクト(.obj)ファイルには含まれません。

(例えば、libstdc++ は明示的に std::basic_string<char,char_traits<char>,allocator<char> > (これは std::string ) の関数を使用するたびに std::string の関数を使うたびに、同じ関数コードがオブジェクトにコピーされる必要はありません。コンパイラはそれらを libstdc++ に参照(リンク)するだけでよいのです)。