プロパティを引数としてテンプレートに割り当てることにより、一意のクラスを生成するクラス テンプレートがあります。いいえ:
template <size_t arg> property;
template <typename... properties> class object;
object<property<value> > obj;
私が避けたいのは、次のように、プロパティの異なる配置に基づいてコンパイラが過剰なコードを生成することです。
object<property<value1>, property<value2> > obj;
次のものと同じ関数テーブルを共有します。
object<property<value2>, property<value1> > obj;
コンパイラーは通常、このような重複を防ぐための何かを用意していますか?それとも、コンパイラーに 2 つのオブジェクトがコードを共有するように強制するようにプログラムする必要がありますか?