我深入研究了一个新项目,我用一堆模板和它们的专业化来解决这个问题。现在,在一天没有编程之后,我发现自己在问是否真的值得额外的代码行。
问题是:专业化有什么好处?
这是:
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*/}
}
};
?
编辑:
该代码是供其他人使用的库的一部分。我使用的是 gcc 4.6.3,但最终代码将与不同的编译器一起使用。
编辑:
这两段代码使用 gcc 4.6.3 生成相同的二进制文件。我无法测试完整的案例,因为我的实际代码远不能使用。这似乎真的是一个原则问题,多功能性,可重用性,可维护性等......