草庐IT

standards-compliance

全部标签

c++ - C++ 标准库必须用 C++ 实现吗?

必须在C++中实现符合标准的C++标准库实现吗?如果没有,是否允许做一些在纯C++和标准库以及一些实现定义的行为中无法实现的神奇事情?我知道存在依赖扩展的并行实现(至少在C++11之前),但它们真的符合吗?我在标准中找不到任何要求,但可能我的标准符今天很弱 最佳答案 对于如何实现标准C++库(或标准C库)完全没有要求。所有库需要实现的是实现文档化和指定的接口(interface)。如何做到这一点完全取决于实现。部分标准库通常由编译器以某种神奇的方式实现,而在C++2011中有几个接口(interface)实际上不能使用标准C++20

c++ - 语言标准中的 "as if"

标准中“好像”一词的确切含义是什么?当用户可以修改行为的各个部分时,它是如何工作的。当谈到operatornew的nothrow版本时,问题在于C++标准。18.4.1.1/7阅读(我的重点):Thisnothrowversionofoperatornewreturnsapointerobtainedasifacquiredfromtheordinaryversion.我的理解是,只要行为合适,“好像”不需要特定的实现。因此,如果operatornew是这样实现的(我知道这不是一个合规的实现,因为没有循环或使用new_handler;但我正在缩短它以专注于我的问题)://NOTE-no

c++ - 语言标准中的 "as if"

标准中“好像”一词的确切含义是什么?当用户可以修改行为的各个部分时,它是如何工作的。当谈到operatornew的nothrow版本时,问题在于C++标准。18.4.1.1/7阅读(我的重点):Thisnothrowversionofoperatornewreturnsapointerobtainedasifacquiredfromtheordinaryversion.我的理解是,只要行为合适,“好像”不需要特定的实现。因此,如果operatornew是这样实现的(我知道这不是一个合规的实现,因为没有循环或使用new_handler;但我正在缩短它以专注于我的问题)://NOTE-no

C++ 疯狂 typedef : what is the point of allowing this syntax by the Standard?

老熟人:typedefintcute_int;//cute:commonandfamiliarsyntax.这个语法很完美。没问题。现在,当我们可以像上面那样编写typedef时,那么允许这种语法的意义何在:inttypedefcrazy_int;//crazy:uncommonandunfamiliarsyntax.只是为了迷惑程序员?这种语法是否在任何地方都需要(实际上我们已经使用了前一种)?从编译器的角度你怎么看?他们觉得它可爱还是疯狂?还是对编译器根本不重要?顺便说一句,这段代码来自这里:Useoftypenamekeywordwithtypedefandnew如果您想知道这是

C++ 疯狂 typedef : what is the point of allowing this syntax by the Standard?

老熟人:typedefintcute_int;//cute:commonandfamiliarsyntax.这个语法很完美。没问题。现在,当我们可以像上面那样编写typedef时,那么允许这种语法的意义何在:inttypedefcrazy_int;//crazy:uncommonandunfamiliarsyntax.只是为了迷惑程序员?这种语法是否在任何地方都需要(实际上我们已经使用了前一种)?从编译器的角度你怎么看?他们觉得它可爱还是疯狂?还是对编译器根本不重要?顺便说一句,这段代码来自这里:Useoftypenamekeywordwithtypedefandnew如果您想知道这是

c++ - 将对象指针作为成员函数 : is it standard? 的第一个参数传递

以下程序同时使用gcc和clang进行编译,但这实际上是标准C++11还是两个编译器都为了方便而选择支持它?structFoo{inti;voidbar(){std::coutmethod=&Foo::bar;FoomyFoo{4};method(&myFoo);//prints4}这当然很方便,但我不明白它是如何/为什么起作用的。 最佳答案 是的,这是标准的。[func.wrap.func.inv]指定operator()(ArgTypes&&...args)来自std::function来电INVOKE(f,std::forwa

c++ - 将对象指针作为成员函数 : is it standard? 的第一个参数传递

以下程序同时使用gcc和clang进行编译,但这实际上是标准C++11还是两个编译器都为了方便而选择支持它?structFoo{inti;voidbar(){std::coutmethod=&Foo::bar;FoomyFoo{4};method(&myFoo);//prints4}这当然很方便,但我不明白它是如何/为什么起作用的。 最佳答案 是的,这是标准的。[func.wrap.func.inv]指定operator()(ArgTypes&&...args)来自std::function来电INVOKE(f,std::forwa

c++ - Visual Studio 2015 “non-standard syntax; use ' &' to create a pointer to member”

我正在学习C++并尝试制作一个小游戏井字游戏。但我不断得到C3867,非标准语法;使用'&'创建一个要记住的指针。这是我的井字游戏.h:#pragmaonce#includeusingnamespacestd;classTicTacToe{public:TicTacToe();stringgetName1();stringgetName2();voidprintBoard();voidclearBoard();voidsetName1(stringplayer1Name);voidsetName2(stringplayer2Name);voidsetSign1(stringplayer

c++ - Visual Studio 2015 “non-standard syntax; use ' &' to create a pointer to member”

我正在学习C++并尝试制作一个小游戏井字游戏。但我不断得到C3867,非标准语法;使用'&'创建一个要记住的指针。这是我的井字游戏.h:#pragmaonce#includeusingnamespacestd;classTicTacToe{public:TicTacToe();stringgetName1();stringgetName2();voidprintBoard();voidclearBoard();voidsetName1(stringplayer1Name);voidsetName2(stringplayer2Name);voidsetSign1(stringplayer

c++ - 为什么 std::cout 将 volatile 指针转换为 bool?

如果您尝试cout指向volatile类型的指针,甚至是您通常希望cout打印字符串的volatilechar指针,您将改为简单地得到'1'(我认为该指针不为null)。我假设输出流operator示例代码:#include#includeintmain(){charx[500];std::strcpy(x,"Helloworld");inty;int*z=&y;std::cout输出:Helloworld10x8046b6c1 最佳答案 ostream::operator除其他外,具有以下重载:ostream&operator当你