[英]C++ metaprogramming recursive step limit
我正在給模板元編程一個去。 這是我提出的一個簡單示例:
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;
編譯器抱怨代碼太復雜了。 這個限制似乎相當隨意,有沒有辦法修改它?
原始遞歸僅終止於模板參數n的偶數值。 您需要兩個停止案例,對於n == 0和n == 1.在修訂的示例中,您需要3個停止案例,或n <= 0的停止案例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.