다음 템플릿 정의 및 템플릿 전문화 정의의 작동 방식을 이해하는 데 어려움이 있습니까? 나에게, 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
아마도 사람들은 * 유형 * 매개 변수 만있는 템플릿을 통해 템플릿에 소개되기 때문일 수 있습니다. 제 생각에 그것은 일부 사람들에게는 새롭고 이상한 가치 매개 변수의 아이디어 일 뿐이라고 생각합니다. –
무엇이 문제입니까? –