首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ideone和Codepad真的不支持C++03吗?

Ideone和Codepad真的不支持C++03吗?
EN

Stack Overflow用户
提问于 2010-11-08 12:33:44
回答 3查看 595关注 0票数 7

我的问题与Prasoon关于非POD类型和值初始化的question有关。

我在Ideone和Codepad等在线编译器上尝试了以下代码,但可执行文件在这两个站点上都出现了运行时错误。

代码语言:javascript
复制
#include <iostream>
#include <cassert>

struct Struct {
    std::string String;
    int Int;
    bool k;
};

struct InStruct:Struct
{
   InStruct():Struct(){}
};

int main()
{
   InStruct i;
   assert ( i.Int == 0);
   std::cout << "Hello";
}

Ideone输出here

代码板输出here

这是否意味着它们都不支持C++03值初始化功能?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-08 12:54:34

这是否意味着它们都不支持C++03值初始化功能?

是。

在4.4版本之前,GCC并不完全支持值初始化(the Boost GCC compatibility header对此进行了解释,并提供了指向相关的GCC缺陷报告的链接;请参见第77行)。

如果你的代码需要可移植,你应该非常小心地依赖值初始化;直到最近,GCC才完全支持它,甚至在其最新版本Visual C++ 2010中,Visual C++也不完全支持它。

票数 4
EN

Stack Overflow用户

发布于 2010-11-08 12:38:20

该声明

代码语言:javascript
复制
InStruct i; 

不调用值初始化

$8.5.3/10 -“初始化器是一组空括号的对象,即(),应该是值初始化的。”

如果要进行值初始化,则需要类似于以下内容的表达式

代码语言:javascript
复制
assert(InStruct().Int == 0);
票数 0
EN

Stack Overflow用户

发布于 2010-12-07 06:18:59

立即试用it!- Ideone支持GCC-4.5.1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4121296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档