0

プロパティを引数としてテンプレートに割り当てることにより、一意のクラスを生成するクラス テンプレートがあります。いいえ:

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 つのオブジェクトがコードを共有するように強制するようにプログラムする必要がありますか?

4

1 に答える 1

3

これは重複ではないため、コンパイラーはそれを防ぐための手段を講じることはできません。2 つ以上の型名が同じ場合にのみ重複します。template class<A,B>andのインスタンス化はtemplate class<B,A>、任意の A と B で同じになるとは言えません。

于 2013-11-07T04:35:48.413 に答える