社区
C++ 语言
帖子详情
一个必定使vc2005sp1编译器崩溃的代码
Oversense
2007-05-17 01:04:19
template <int n>
struct s
{
enum { value = s<n-1>::value };
};
template<>
struct s<0>
{
enum { value = 0 };
};
int main()
{
s<490>::value;
}
一直以来,我都相信,vc的编译器代码是拼凑出来。
...全文
1061
32
打赏
收藏
一个必定使vc2005sp1编译器崩溃的代码
template struct s { enum { value = s::value }; }; template struct s { enum { value = 0 }; }; int main() { s::value; } 一直以来,我都相信,vc的编译器代码是拼凑出来。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
32 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iambic
2007-05-18
打赏
举报
回复
to Oversense: 我想你可能没看懂我的意思,或者是太低估我了。你的两个数据也说明不了实际的问题,前者编译时间短是由于代码规模小,后者运行时间长是由于代码算法太差。
Oversense
2007-05-18
打赏
举报
回复
to iambic,没有实践,就没有发言权
下面的例子,在vc2005sp1 上,第一个编译的时间是1,第二个运行的时间是100000
template <int n>
struct f
{
enum {value=f<n-1>::value+f<n-2>::value};
};
template<>
struct f<1>
{
enum {value=1};
};
template<>
struct f<2>
{
enum {value=1};
};
long F (long n)
{
if (n==1 || n==2)
{
return 1;
}
else
{
return F(n-1)+F(n-2);
}
}
int main()
{
std::cout<<f<45>::value<<std::endl;
std::cout<<F(45)<<std::endl;
return 0;
}
Oversense
2007-05-18
打赏
举报
回复
to 楼上的,看好你的版本,vc2005sp1
泥巴娃
2007-05-18
打赏
举报
回复
完全是无稽,根本不会 crash
Oversense
2007-05-18
打赏
举报
回复
to 楼上的,可以这么认为
femalelover
2007-05-18
打赏
举报
回复
借步步文的地方问一下, 是不是G++, VC2005在编译模板的时候, 都只支持所谓的"包含模型"啊, 就是说模板的声明与定义都必须在头文件中, 否则链接出错了.
dai_weitao
2007-05-18
打赏
举报
回复
模板的递归不单单是一种极限测试, 它实际上作用很大.
只是还没有一款真正好的编译器去支持
Red_angelX
2007-05-18
打赏
举报
回复
原来如此.
Rainstorey
2007-05-18
打赏
举报
回复
模板嵌套递归
lidongri
2007-05-18
打赏
举报
回复
模板元编程
qhgary
2007-05-18
打赏
举报
回复
该结帖了吧.
tidyduck
2007-05-18
打赏
举报
回复
传说中的模板递归啊,踩一脚!~~
星羽
2007-05-17
打赏
举报
回复
恩,传说中的
xuleier
2007-05-17
打赏
举报
回复
这种问题都被发现了?
qhgary
2007-05-17
打赏
举报
回复
难道这就是传说中的递归模版?
taodm
2007-05-17
打赏
举报
回复
要求太高了。
Oversense
2007-05-17
打赏
举报
回复
我的意思,他应该出提示,而不是crash.
iambic
2007-05-17
打赏
举报
回复
>>不会吧
>>我编译的时间几乎是瞬时的..
这么几行代码当然很快啦,项目大起来速度就很慢了。
如果说从模板诞生的时候就有这种问题,那模板元应该要把这个问题发挥到极致了。
whoho
2007-05-17
打赏
举报
回复
特殊化递归层数在C++标准上并没有什么规定,只是“建议”了一个很小的数值,
490导致vc无法编译是很正常的,不值得大惊小怪.
至于VC编译器的拼凑之说,顶多只能算揣测吧,从前不好说,但在Stanley B. Lippman
这个C++世界的顶尖高手加盟微软以后,主持新版VC编译器的开发,应该说,VC的品质
已经有了质的飞跃
goodluckalong
2007-05-17
打赏
举报
回复
mark
加载更多回复(12)
Visual C++ 6.0 专业便携版
Visual C++ 6.0 专业便携版 1.仅用于技术学习交流之用,禁止用于一切商业用途。 2.对于使用本人的软件所造成的一切损失及后果由使用者...1.集成 Intel C++ 10
编译器
,这是能支持 VC6 的最后
一个
Intel C++
编译器
。
Visual C++ 6.0专业便携版,亲测Win10 1803可用
Visual C++ 6.0 专业便携版 1.仅用于技术学习交流之用,禁止用于一切商业用途。 2.对于使用本人的软件所...1.集成 Intel C++ 10
编译器
,这是能支持 VC6 的最后
一个
Intel C++
编译器
。 by cntrump December 25, 2010
windows下安装OMNET++3.3版本详细步骤
2. **Ghostscript 8.64**:Ghostscript 是
一个
用于处理 PostScript 和 PDF 文件的工具,在 OMNeT++ 的安装过程中用于生成图形界面中的某些文档。下载地址为 [Ghostscript 8.64]...
VcRedist:Microsoft Visual C ++可再发行组件的生命周期管理
4. **PowerShell Gallery**:这是
一个
开源社区驱动的平台,提供了大量与PowerShell相关的模块和脚本,其中包括用于处理VcRedist部署的资源。 **VcRedist的主要版本和更新** VcRedist有许多版本,每个版本对应不同...
在VC6.0环境下成功使用Boost库
Boost是
一个
包含多种实用工具和库的开源C++库集合,旨在增强C++标准库功能。尽管VC6.0已老旧,通过适当配置仍可利用Boost的强大功能。本文介绍了安装和配置Boost库、禁用某些调试特性、手动编译Boost库为静态...
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章