问题标签 [language-lawyer]

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.

0 投票
4 回答
841 浏览

c++ - C++ 标准库是 C++ 语言的一部分吗?

C++ 标准库C++ 语言的一部分吗?(注意“语言”,而不是“标准”;当然,两者都是标准的一部分)。

如果是这样,为什么?如果不是,为什么不呢?

这个问题的答案可能在 C++98、C++03 和 C++0x 中有所不同。

这不是主观的,因为它可以从相关标准文档中的措辞/要求中推断出来。

0 投票
7 回答
38644 浏览

c++ - 我们什么时候需要有一个默认构造函数?

我的问题很简单。我们什么时候需要有一个默认构造函数?请参考以下代码:

  1. 为什么编译器没有在类 Rect 中隐式生成零参数默认构造函数?

  2. 据我所知,如果一个类(Rect)派生自另一个具有默认构造函数(隐式生成或显式提供)的类(Shape),则默认构造函数应由编译器生成。

0 投票
2 回答
5973 浏览

c++ - 如何正确引用匿名命名空间中的函数

考虑这个 C++ 代码片段:

GCC 编译得很好。Visual C++ 2008 编译失败,出现 C2039 错误。这两个编译器中的哪一个在这里是正确的?有什么方法可以正确引用“全局” f吗?

编辑: Zack 建议尝试,它适用于两种编译器。对我来说看起来有点奇怪。

0 投票
1 回答
925 浏览

javascript - Gecko 的 Javascript 解释器引擎语义是什么?

编辑

考虑到下面关于参考ECMAScript 语言规范 - 11.13.2 复合赋值的答案响应

考虑到这些原因,

不一样。从左到右的脚本评估存在时间语义问题(参考:ECMA 规范 - 加法运算符)。结果之一是+运算符不一定是可交换的。

这也可以通过以下方式看到:

或者

懒惰的评估范式,被我错误地和不恰当地使用,从而产生了下面的问题,也是我个人作案手法的一个坏属性。


原帖

以下考虑可能已经得到解决,尽管似乎没有。如果是这样,是否可以提供讨论的链接?

Gecko Javascript 运行时引擎的正式指称语义是一个谜。实证检验是令人筋疲力尽的,不可能是详尽无遗的。

  • 是否有权威的正式规范或官方参考准确定义 Gecko 如何解释 Javascript?

参考,ECMAScript 语言规范,似乎不够,尽管为这样的脚本的混合物提供了可信度,例如,

在绑定值时具有此类构造的后续含义。

  • 是否有一个明确的范例来描述对象和实例评估的 Javascript 代码解释?

这将阐明调用(或更确切地说是使用)需要、价值、参考、推断、名称……的概念是否相关。也就是说,Javascript 是一个原型解释器,它为以下一些问题提供了隐含的含义。

什么是预期结果:

? 预测结果是否容易(正确!)?

这个问题有点修辞,因为它是专门设计的eval's 来强制和强调解释的细微差别。是否可以使用ECMAScript 语言规范或其他文档来解决此脚本的评估(以及下面的问题) ?

(顺便说一句,考虑:

显示:

其中 的部分评估ra不类似于o.n's!

以及以下比使用 on 更少异国情调的内容:

显示:

)

考虑以下脚本:

Gecko 引擎输出:

0 投票
4 回答
1330 浏览

c++ - 如果类继承自纯基类,默认析构函数是什么?

考虑接下来的两个课程:

以下是否导致未定义的行为:

?

附加问题:为什么一个方法被声明为虚拟的,它在派生类中是虚拟的(即使在派生类中没有使用 virtual 关键字),但对于析构函数却不是这样?

0 投票
3 回答
615 浏览

c++ - 初始化器究竟是什么时候被临时销毁的?

在回答了一些问题后,我今天构建了这个实验

b在通过动态初始化false将其设置为之前具有值(由零初始化产生)。true如果在初始化完成之前临时被销毁b,我们将打印false,否则true

规范说临时在完整表达式结束时被销毁。这似乎与b. 所以我想知道

  • 规范是否允许实现在不同的运行中false同时打印?true

上面的Clang 打印false,而 GCC 打印true. 这让我很困惑。我是否错过了一些定义订单的规范文本?

0 投票
1 回答
871 浏览

c++ - 使用点后模板函数的特化会破坏编译

考虑下一个例子:

编译失败并出现以下错误消息:

标准中的哪一段解释了这个错误?

PS:我知道如果我将函数定义移到 main 前面会使错误消失。

0 投票
2 回答
232 浏览

java - Java:编译时解析和“最具体的方法”

如果您尝试在下面使用重载函数compute1()compute2()和 ,则会导致编译错误:compute5()

在阅读了 JLS 第 15.12 节之后,我想我明白了......在匹配重载方法的第 2 阶段(允许装箱/拆箱,没有可变参数)中,在确定“最具体的方法”时,JLS 说(实际上)最特定方法是其形式参数是其他适用方法的子类型的方法,并且原语和对象(例如intInteger)绝不是彼此的子类型。SoInteger是 的子类型Integer,并且int是 的子类型int,但是Integer和与int/r/t 子类型比较不兼容,因此compute1()/compute2()对都没有最具体的方法。

(而 incompute3()compute4()带有String参数的方法比带有参数的方法更具体Object,所以程序打印 6 和 8。)

我的推理正确吗?

0 投票
3 回答
9990 浏览

c++ - std::string 在 C++11 中是否总是以空结尾?

Herb Sutter 在 2008 年在他的网站上发表的一篇文章中说:

出于与并发相关的原因,有一个积极的提议要在 C++0x 中进一步加强这一点,并要求空终止并可能禁止写时复制实现。这是论文:http ://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2534.html 。我认为本文中的一项或两项提案很可能会被采纳,但我们将在下一次或两次会议上看到。

我知道 C++11 现在保证 std::string 内容连续存储,但是他们在最终草案中采用了上述内容吗?

现在使用类似的东西安全&str[0]吗?

0 投票
1 回答
95 浏览

c++ - 此示例是否导致未定义的行为?

可能重复:
未定义的行为和序列点

变量i更改了两次,但下一个示例会导致未定义的行为吗?

我得到的输出是: