与编程语言的任何方面的设计相关的问题的标签。
C++03 标准 7.3.1.1 [namespace.unnamed] 第 1 段:(和 C++11 标准也使用类似的定义) 未命名命名空间定义的行为就好像它被替换为 命名空间唯一 { /* ...
许多语言都有幂运算符;为什么C++没有?例如,Fortran 和 Python 使用 **,并且通常使用 ^ 编写(例如在 LaTeX 中)。
这个所谓的重复解释了为什么不允许这样做的机制,并显示了它无法工作的极端情况,但未能解决为什么 C++ 在这种情况下拒绝允许它的问题...
我开始用 std::string_view 进行实验。 它有一个非常丑陋的特点。你不能说: std::string_view 和 std::string_view 就像很棒的 std::span 一样。 所以,你不能...
在C++98标准和C++03标准之间,做了一个有趣的改变: 结构体S{ 整数S; }; 此代码在 C++03 及更高版本中有效,但在 C++98 中格式错误。 具体来说,[类...
int x = f(); 内联 int y = x; 未指定 y 是否为零或 x 的值。 请注意,x 具有有序初始化,y 具有部分有序初始化(请参阅 [basic.start.dynamic] p...
从那里我知道在C中对指针调用offsetof是非法的,但为什么它是未定义的行为?标准执行 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEM...
为什么std::forward_list没有size()成员函数?
我一直使用C++11的forward_list作为快速插入的容器,没有太多内存开销,因为它是一个单链表。 在意识到forward_list没有size()之后...
这里为什么List<Subtype>可以赋值给List<Supertype>?
我知道Java通常是不变的,因为它不想处理协变/逆变问题。 所以一般来说, List a = new ArrayList(); 将需要...
C++23 中的 std::ranges::view 概念要求视图可移动,其中包括移动可分配性。我理解为什么我们希望视图是可移动构造的,但为什么需要分配......
operator = 不是序列点有什么充分的理由吗?在 C 和 C++ 中都是如此。 我很难想出反例。
从技术上讲,赋值运算符的任何用法都可以用括号括起来的海象运算符替换吗?
假设我们有这个赋值语句: 一个= 5 尽管无缘无故地这样做显然很丑陋,但我们可以通过以下方式在技术上完成同样的事情: (一:= 5) 这仍然将 5 分配给 a,...
首先,我的编程语言名为 Ignite,是一种转译的编程语言,并将 Ignite 源文件转换为 C++ 源文件。 链式比较运算符是当你有
如果用作数组大小的逗号表达式是数组声明符的一部分,为什么必须将其括在括号中?
我刚刚注意到 int arr2[(777, 100)] 是合法的数组声明符,而 int arr1[777, 100] 不是。 一个更详细的编译示例是这样的 #包括 无效 f(int i) {
为什么Java中没有超接口的接口是Object的子类型? 我在这里想问的是为什么语言创建者会做出这样的设计选择,即它的实际目的是什么......
是否存在阻止将排序容器添加到 Python 的 Python 设计决策 (PEP)? (OrderedDict 不是排序容器,因为它是按插入顺序排序的。)
正如 https://without.boats/blog/why-async-rust/ 所说, 操作系统线程有一个大的预分配堆栈,这增加了每个线程的内存开销。 文章继续指出,大部分
根据 cppref,std::from_chars 可以将字符串转换为整数。在 C++ 中,bool 是整型。所以我认为下面的代码是直观且富有表现力的: 自动 const sv = "true"sv; 一个...
为什么 C# 9.0 有一个“with”关键字而不是使用现有语法?
C# 9.0 with 关键字有助于从现有记录创建新记录。 我的问题是:什么技术原因促使或可能促使使用新的密钥引入此特定功能......
我正在编写一种编程语言(细节不相关),它使用类似 Lisp 的 cons 单元来存储数据(这使得垃圾收集器的实现变得容易)。我就不告诉你一切的细节了...