问题标签 [standards-compliance]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 未命名命名空间中符号的模板访问
我们正在将我们的 XL C/C++ 编译器从 V8.0 升级到 V10.1,发现一些代码现在给我们一个错误,即使它是在 V8.0 下编译的。这是一个最小的例子:
测试.h:
测试.cpp:
在 V10.1 下,我们得到以下错误:
我们发现 g++ 3.3.2 和 4.3.2 之间存在类似的差异。我还在 g++ 中发现,如果我将 移动#include "test.h"
到未命名的命名空间声明之后,编译错误就会消失。
所以这是我的问题:标准对此有何评论?当一个模板被实例化时,该实例是否被认为是在模板本身被声明的地方被声明的,或者在这一点上标准不是很清楚?我看了一些 n2461.pdf 草案,但并没有真正想出任何确定的东西。
xhtml - 在新窗口中打开页面
<a href="page.html" target="_blank">
有没有一种方法可以在不使用符合标准的情况下在 XHTML 中打开页面?
我没有使用框架,但有些页面我想在新窗口中打开,而不是在当前窗口中打开。
c - (size_t)((char *)0) 是否永远不会评估为 0?
根据“为什么在 offsetof() 中减去空指针?”中的响应。(以及我对 K&R 的阅读),C 标准不需要(size_t)((char *)0) == 0
. 尽管如此,我从未见过将空指针转换为整数类型的情况会评估为其他任何东西。
如果有编译器或场景 where (size_t)((char *)0) != 0
,它是什么?
c++ - 为什么 C++ 允许非动态分配的可变长度数组?
我对 C++ 比较陌生,从一开始我就被灌输了你不能做类似的事情
相反,您必须使用动态内存。但是,我最近发现上面的内容可以编译(尽管我收到了一个 -pedantic 警告,说它被 ISO C++ 禁止)。我知道如果标准不允许这样做显然是个坏主意,但我以前什至不知道这是可能的。
我的问题是,如果标准不允许,为什么 g++ 允许不动态分配的可变长度数组?另外,如果编译器可以做到这一点,为什么它不在标准中?
gcc - 就标准合规性或功能而言,MinGW 是否与 GCC 完全相同?
作为一个端口,我认为很难让它完全跟上 GCC 的速度。是这样,还是在标准合规性或功能方面有什么不同?
c++ - 寻求对 MSVC 9.0 的 C++ 标准合规性的参考
我“知道”(希望)MSVC 9.0 实现了 C++ 2003 ( ISO/IEC 14882:2003 )。我正在寻找对这一事实的参考,并且我也在寻找任何关于 MSVC 9.0 与该版本标准的兼容程度的研究。
我已经搜索但无法找到来自 MicroSoft 的具体参考,它实际上说明了 MSVC 实现 C++ 2003 的效果。一些过时的文档说“这个版本实现了大约 98% 的合规性”(当提到 MSVC .NET 2003 与 C++ 1997 的一致性时)。但是我想要一个链接到 MS 的文档,上面写着“MSVC 9.0 实现了等等”,以及另一个链接到一个已经测试了 MSVC 9.0 一致性的独立小组。
你知道任何这样的链接吗?
css - 是否可以使用 CSS 圆角并仍然通过验证?
IIRC 的情况是 IE 根本不支持圆角,但其他一些浏览器需要特定于浏览器的扩展...... FF 或 web-kit,我不记得了。
我很乐意在某些情况下使用它并让 IE 回退到方角,但确实使用浏览器扩展 CSS 中断验证...我非常喜欢让我的网站验证并在 IE6 上工作。
c++ - 奇怪的错误:无法从“int”转换为“ios_base::openmode”
我正在使用 g++ 编译一些代码。我写了以下片段:
我收到这些错误......知道为什么吗?
错误 1:从 'int' 到 'std::_Ios_Openmode' 的无效转换<br> 错误 2:初始化 'std::basic_filebuf<_CharT, _Traits>* std::basic_filebuf<_CharT, _Traits>::open( const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits]'<p>
据我从谷歌搜索中得知,g++ 实际上在这里打破了 C++ 标准。我觉得这很令人惊讶,因为它们通常非常严格地符合标准。是这样吗?还是我做错了什么。
我对标准的参考:http ://www.cplusplus.com/reference/iostream/ofstream/open/
c++ - 将括号初始化列表分配给数组是否正确?
标准说,在 5.17/9 下
一个花括号初始化列表可能出现在- 对标量的赋值 [...]
- 由用户定义的赋值运算符 [..] 定义的赋值的右侧
在 GCC 4.5.1-pre9999 中,我可以编译它(使用 -std=c++0x,NOT -std=gnu++0x)
它打印出来123456
。GCC在这里正确吗?