gpt4 book ai didi

c++ - 编译递归模板调用静态成员函数时类型不完整

转载 作者:太空宇宙 更新时间:2023-11-04 12:08:40 24 4
gpt4 key购买 nike

我在 Windows 上使用 g++ 3.4.4 版编译这段代码:-

#include <iostream>

template< int i >
class LOOP{
public:
static inline void EXEC(int* count){
(*count)++;
LOOP< i-1 >::EXEC(count);
}
};

template<> class LOOP< 0 >{
public:
static inline void EXEC(int* count){
(*count)++;
}
};

int main(int i){

int barely = 0;
LOOP< 1000 >::EXEC(&barely);
}

它提示说,在嵌套名称说明符中使用了不完整的类型 LOOP<500> 并且在它之前有一个先前实例化的列表,“从 static void LOOP::EXEC(int *) with i - 1000 实例化”等等。

当我将其更改为 LOOP<100> 时,它编译正常。

编辑 如果这会影响实现限制,我将在 cygwin 上运行它。

最佳答案

您达到了实现的模板深度限制。您可以通过使用 -ftemplate-depth=1005(现代 GCC)或 -ftemplate-depth-1005(旧 GCC)进行编译来增加限制。

关于c++ - 编译递归模板调用静态成员函数时类型不完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10724207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com