1993年,编译器开始支持简单的模板构造
因此用户可以定义通用的容器和函数
同一时期,C++标准委员会也真正考虑将STL纳入标准C++
//: C05:Factorial.cpp
// From "Thinking in C++, Volume 2", by Bruce Eckel & Chuck Allison.
// (c) 1995-2004 MindView, Inc. All Rights Reserved.
// See source code use permissions stated in the file 'License.txt',
// distributed with the code package available at www.MindView.net.
// Compile-time computation using templates.
#include <iostream>
using namespace std;
template<int n> struct Factorial {
enum { val = Factorial<n-1>::val * n };
};
template<> struct Factorial<0> {
enum { val = 1 };
};
int main() {
cout << Factorial<12>::val << endl; // 479001600
getchar();
} ///:~
输出
479001600
程序输出了由参数12!实例化后的正确值
并没有警告发出
那么警告是什么
在程序开始运行之前就已经完成了计算