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