私は、たくさんのテンプレートとそれらの専門分野で取り組む新しいプロジェクトに深く関わっています。さて、プログラミングをせずに1日を過ごした後、私はそれが本当に余分なコード行の価値があるかどうかを自問していることに気づきました。
問題は、専門化の利点は何ですか?
これは:
template <int i> class A {};
template <> class A <1> { void foo() {/* something */} };
template <> class A <2> { void foo() {/* something else*/} };
template <> class A <3> { void foo() {/* even different*/} };
とにかくより良い(より速い実行)
template <int i> class A {
void foo() {
if (i==1) {/* something */}
else if (i==2) {/* something else*/}
else if (i==3) {/* even different*/}
}
};
?
編集:
このコードは、他の人が使用するライブラリの一部です。私はgcc4.6.3を使用していますが、最終的にはコードはさまざまなコンパイラで使用されます。
編集:
これらの2つのコードは、gcc4.6.3を使用して同一のバイナリになります。私の実際のコードは使用可能にはほど遠いため、完全なケースをテストすることはできません。それは本当に原則、汎用性、再利用性、保守性などの問題のようです...