我正在尝试模板元编程。这是我想出的一个简单的例子:
template <int n>
struct N
{
static const int k = N<n-2>::k;
};
template<>
struct N<0>
{
static const int k = 0;
};
int main(int, char *[])
{
}
以上工作。请注意,k 定义为k = N<n-2>::k;
以下失败:
template <int n>
struct N
{
static const int k = N<n-3>::k;
};
template<>
struct N<0>
{
static const int k = 0;
};
int main(int, char *[])
{
cout << N<10>::k;
getchar();
}
相同的代码,除了现在k = N<n-3>:k;
编译器抱怨代码太复杂。这个限制似乎相当随意,有没有办法修改它?