本文实现一个简单的模板元编程示例。原理是通过C++模板,在编译阶段计算程序的结果。这样听上去比较高大上,实际上很少应用。
HelloWorld.h代码如下:
#pragma once templatestruct Factorial { enum { value = n*Factorial ::value }; }; template<> struct Factorial<0> { enum { value = 1 }; }; template R getMax(T1 const & a, T2 const & b) { return a > b ? a : b; }
HelloWorld.cpp代码如下
#include#include #include "HelloWorld.h" using namespace std; void main() { //模板元编程 cout << Factorial<5>::value << endl; //模版编程示例 cout << getMax (1, 2) << endl; cout << getMax (1, 2) << endl; cout << getMax (1, 4.5) << endl; }
运行结果如下:



