私はかなり長い間C++でプログラミングしてきたので、テンプレートをたくさん使って楽しんでいます。私が最近組み込みプログラミングに取り組んできたことで私が最近疑問に思っていたのは、テンプレートパラメータが異なるテンプレートインスタンスでコードの重複に関してリンカがどのように動作するのかということです。これがうまくリンク時間の間、離れて最適化することが知られている同じパラメータで同じテンプレートの複数のインスタンスのためにリンカーは通常、異なるC++テンプレートインスタンスから重複したコードを最適化しますか?
(参照:How does C++ link template instancesを)リンカが任意の重複を認識した場合
はしかし私の場合、私は興味異なるパラメータでインスタンス化された2つのテンプレート間のコード。彼らは異なるタイプなので、私は彼らが自動的に崩壊しないだろうと思います。しかし、テンプレートパラメータに依存せず、したがって2つのクラス間で同一であるいくつかの関数を持つ可能性があるので、リンカがそれらを最適化して空間を節約できると想定するかもしれません。
この場合、どのような動作が期待できますか?
godboltを試しましたか? – lorro
はい、例えばhttps://godbolt.org/g/jbx2msを参照してください。ただし、これはリンカーではなく私が理解できる限りコンパイラです。リンカが最適化できる底に同じコードがありますが、それが普通かどうかわかりません。 – Blackclaws