興味深いことに、GCC または Clang ツールセットは現在、MSVC の同一の COMDAT フォールディング(ICF) と同等のものを実装していますか? そうでない場合、何か計画はありますか?古い GCC メーリング リストのメッセージ以外に、この件に関する最近の信頼できるリンクが見つからないようです。
そうでない場合、これは、個別の型に対するテンプレートのインスタンス化が、バイナリ互換性がある場合でも、結果のバイナリで常に個別の関数であることを意味しますか (それらが完全にインライン化されていない状況で)、またはこれを処理するための他のメカニズムがありますか?他のレベルで?
また、結果として得られる実行可能ファイルのサイズを実際に最小化する上で、ICF が大きな違いを生んでいることに気付いた人はいますか? テストするのに便利な大規模な MSVC プロジェクトはありません。(たまたま多くの異なる vtable-layout 互換タイプでテンプレートをインスタンス化した場合にのみ、本当に役立つと思います。)
最後に、異なる関数への 2 つの関数ポインタが実行時に等しく比較されるのは C++11 標準に準拠していますか? このリンクはそうではないことを暗示しているようですが、C99 用です。編集:このトピックに関する以前の質問を見つけました