template <int N>
struct Factorial {
enum { value = N * Factorial<N - 1>::value };
};
template <>
struct Factorial<0> {
enum { value = 1 };
};
const int x = Factorial<4>::value; // == 24
const int y = Factorial<0>::value; // == 1
Sau khi tiền biên dịch, nếu chúng ta kỳ diệu có thể nhìn thấy những gì các trình biên dịch tạo ra, sẽ chúng tôi thực sự thấy:Mã nguồn thực tế mà mẫu này tạo ra trông như thế nào?
const int x = 24;
const int y = 1;
Và chúng ta sẽ thấy các định nghĩa thực tế cho struct Factorial
, nhiều trong số này? Nếu họ trông như thế nào? Tôi đang cố gắng quấn đầu của tôi xung quanh phần này của quá trình lập trình meta.
'thừa <901> :: giá trị' rơi tôi DEV-C++: Lỗi: template instantiation sâu vượt quá tối đa 900 – johnchen902