C++ テンプレートがある場合、それらをリンクするには 2 つの選択肢 ( exportキーワードなし) があります。
インライン化による包含モデル - つまり、.h ファイル内の宣言と一緒に定義を組み込みます。これにより、すべての関数がインライン化され、大きなユニットが作成されます (怠け者ですが)。
インライン化なしの包含モデル - つまり、この .h ファイルを含めるようなもの:
コード:
// templateinstantiations.cpp
#include "array.cpp"
template class array <int, 50>; // explicit instantiation
テンプレートを使用するたびに、必要なすべての型を明示的にインスタンス化するように注意します (これは退屈で保守が難しい場合があります)。
私の質問は次のとおりです。関数を過度にインライン化すると、メモリのスラッシングとパフォーマンスの低下が発生する可能性があることを知っています..さらに、上記の両方のケースでコンパイル時間が膨大になるようです..最初と2番目のアプローチのトレードオフは何ですか? 2 番目よりも 1 番目を選択する基準はありますか、それとも、それらを試して「時間を計る」必要がありますか?