language-design 相关问题

与编程语言的任何方面的设计相关的问题的标签。

C++ 未命名(匿名)命名空间定义

C++03 标准 7.3.1.1 [namespace.unnamed] 第 1 段:(和 C++11 标准也使用类似的定义) 未命名命名空间定义的行为就好像它被替换为 命名空间唯一 { /* ...

回答 1 投票 0

为什么C++没有幂运算符? [已关闭]

许多语言都有幂运算符;为什么C++没有?例如,Fortran 和 Python 使用 **,并且通常使用 ^ 编写(例如在 LaTeX 中)。

回答 4 投票 0

为什么C++重载解析不能推导出嵌套模板类型?

这个所谓的重复解释了为什么不允许这样做的机制,并显示了它无法工作的极端情况,但未能解决为什么 C++ 在这种情况下拒绝允许它的问题...

回答 1 投票 0

为什么 `std::string_view` 不可修改?

我开始用 std::string_view 进行实验。 它有一个非常丑陋的特点。你不能说: std::string_view 和 std::string_view 就像很棒的 std::span 一样。 所以,你不能...

回答 1 投票 0

为什么C++03允许数据成员与类同名?

在C++98标准和C++03标准之间,做了一个有趣的改变: 结构体S{ 整数S; }; 此代码在 C++03 及更高版本中有效,但在 C++98 中格式错误。 具体来说,[类...

回答 1 投票 0

为什么内联/非内联变量的初始化顺序不确定?

int x = f(); 内联 int y = x; 未指定 y 是否为零或 x 的值。 请注意,x 具有有序初始化,y 具有部分有序初始化(请参阅 [basic.start.dynamic] p...

回答 1 投票 0

为什么在指针成员上调用offsetof()是非法的?

从那里我知道在C中对指针调用offsetof是非法的,但为什么它是未定义的行为?标准执行 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEM...

回答 1 投票 0

为什么std::forward_list没有size()成员函数?

我一直使用C++11的forward_list作为快速插入的容器,没有太多内存开销,因为它是一个单链表。 在意识到forward_list没有size()之后...

回答 3 投票 0

这里为什么List<Subtype>可以赋值给List<Supertype>?

我知道Java通常是不变的,因为它不想处理协变/逆变问题。 所以一般来说, List a = new ArrayList(); 将需要...

回答 1 投票 0

为什么视图需要可(移动)分配?

C++23 中的 std::ranges::view 概念要求视图可移动,其中包括移动可分配性。我理解为什么我们希望视图是可移动构造的,但为什么需要分配......

回答 1 投票 0

赋值运算符不是序列点有什么好的理由吗?

operator = 不是序列点有什么充分的理由吗?在 C 和 C++ 中都是如此。 我很难想出反例。

回答 4 投票 0

从技术上讲,赋值运算符的任何用法都可以用括号括起来的海象运算符替换吗?

假设我们有这个赋值语句: 一个= 5 尽管无缘无故地这样做显然很丑陋,但我们可以通过以下方式在技术上完成同样的事情: (一:= 5) 这仍然将 5 分配给 a,...

回答 1 投票 0

如何为我的编程语言实现链式比较运算符支持?

首先,我的编程语言名为 Ignite,是一种转译的编程语言,并将 Ignite 源文件转换为 C++ 源文件。 链式比较运算符是当你有

回答 1 投票 0

如果用作数组大小的逗号表达式是数组声明符的一部分,为什么必须将其括在括号中?

我刚刚注意到 int arr2[(777, 100)] 是合法的数组声明符,而 int arr1[777, 100] 不是。 一个更详细的编译示例是这样的 #包括 无效 f(int i) {

回答 1 投票 0

为什么Java中接口是Object的子类型? [已关闭]

为什么Java中没有超接口的接口是Object的子类型? 我在这里想问的是为什么语言创建者会做出这样的设计选择,即它的实际目的是什么......

回答 2 投票 0

为什么Python的标准库中没有排序容器?

是否存在阻止将排序容器添加到 Python 的 Python 设计决策 (PEP)? (OrderedDict 不是排序容器,因为它是按插入顺序排序的。)

回答 7 投票 0

对于 64 位虚拟内存,为什么预分配堆栈很昂贵?

正如 https://without.boats/blog/why-async-rust/ 所说, 操作系统线程有一个大的预分配堆栈,这增加了每个线程的内存开销。 文章继续指出,大部分

回答 1 投票 0

为什么 C++17 标准不允许将字符串转换为布尔值?

根据 cppref,std::from_chars 可以将字符串转换为整数。在 C++ 中,bool 是整型。所以我认为下面的代码是直观且富有表现力的: 自动 const sv = "true"sv; 一个...

回答 1 投票 0

为什么 C# 9.0 有一个“with”关键字而不是使用现有语法?

C# 9.0 with 关键字有助于从现有记录创建新记录。 我的问题是:什么技术原因促使或可能促使使用新的密钥引入此特定功能......

回答 2 投票 0

检测由 cons 细胞组成的树中的共享结构

我正在编写一种编程语言(细节不相关),它使用类似 Lisp 的 cons 单元来存储数据(这使得垃圾收集器的实现变得容易)。我就不告诉你一切的细节了...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.