我難以理解以下模板定義和模板專業化定義是如何工作的?對我來說,factorial<34>
或factorial<T-1>
看起來很奇怪!因子<T - 1>在模板定義中的含義
例如:
factorial<T - 1>::value
意味着什麼?
#include <iostream>
template<int T>
struct factorial {
enum { value = factorial<T - 1>::value * T };
};
template<>
struct factorial<1> {
enum { value = 1 };
};
int main()
{
std::cout << factorial<34>::value << std::endl;
}
g++ -o testSTL01 testSTL01.cpp -Wall
testSTL01.cpp: In instantiation of ‘factorial<13>’:
testSTL01.cpp:5:3: instantiated from ‘factorial<14>’
testSTL01.cpp:5:3: instantiated from ‘factorial<15>’
testSTL01.cpp:5:3: instantiated from ‘factorial<16>’
testSTL01.cpp:5:3: instantiated from ‘factorial<17>’
testSTL01.cpp:5:3: instantiated from ‘factorial<18>’
testSTL01.cpp:5:3: [ skipping 11 instantiation contexts ]
testSTL01.cpp:5:3: instantiated from ‘factorial<30>’
testSTL01.cpp:5:3: instantiated from ‘factorial<31>’
testSTL01.cpp:5:3: instantiated from ‘factorial<32>’
testSTL01.cpp:5:3: instantiated from ‘factorial<33>’
testSTL01.cpp:5:3: instantiated from ‘factorial<34>’
testSTL01.cpp:15:29: instantiated from here
testSTL01.cpp:5:3: warning: integer overflow in expression
start to run the app ...
0
它看起來很簡單。你不明白哪部分? – Mankarse 2012-02-01 15:03:10
也許這是因爲人們通過僅具有* type *參數的模板被引入到模板中。我認爲這只是價值參數的想法,對某些人來說是新奇而陌生的。 – 2012-02-01 15:04:56
這是什麼問題? – 2012-02-01 15:05:02