簡體   English   中英

C ++元編程遞歸步長限制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM