【发布时间】:2010-11-16 11:52:48
【问题描述】:
我有一个问题...我不懂模板元编程。
问题是,我已经阅读了很多关于它的内容,但对我来说仍然没有多大意义。
事实 nr.1:模板元编程更快
template <int N>
struct Factorial
{
enum { value = N * Factorial<N - 1>::value };
};
template <>
struct Factorial<0>
{
enum { value = 1 };
};
// Factorial<4>::value == 24
// Factorial<0>::value == 1
void foo()
{
int x = Factorial<4>::value; // == 24
int y = Factorial<0>::value; // == 1
}
所以这个元程序更快......因为常量字面量。
但是:现实世界中哪里有常量字面量?我使用的大多数程序都会对用户输入做出反应。
事实编号。 2:模板元编程可以实现更好的可维护性。
是的,阶乘示例可能是可维护的,但是当涉及到复杂的函数时,我和大多数其他 C++ 程序员都无法阅读它们。
另外,调试选项很差(或者至少我不知道如何调试)。
模板元编程什么时候有意义?
【问题讨论】:
-
这对我来说从来没有多大意义......
-
别难过,几乎没人懂。
标签: c++ templates metaprogramming