language-design 相关问题

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

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

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

具有完整类型推断(没有类型注释)的语言是否需要类型检查?

我是类型系统和类型推断的新手。我的目标是为没有类型的 OOP 语言实现静态类型系统和类型推断算法(最接近的例子是没有动态特性的 JS ...

回答 1 投票 0

是否可以在C++中制作零分配协程运行时?

我知道在 Rust 中,异步函数不需要在堆上分配。在 Rust 中,异步函数返回一个编译器生成的结构,您可以在该结构上调用编译器生成的 poll 方法(

回答 1 投票 0

为什么隐式定义的移动构造函数/赋值运算符的条件与复制操作不同?

为什么 C++ 编译器对自动生成的移动构造函数比对自动生成的复制构造函数或赋值运算符有更多限制? 自动生成动作

回答 3 投票 0

C 和 C++ 的常量正确性有什么区别?

我理解 const 正确性意味着什么,我的问题不是关于 const 正确性是什么。所以我不期待对此的解释或 C++-FAQ 链接。 我的问题是: 这些是什么...

回答 3 投票 0

为什么const指针可以指向非常量对象?

//示例1 常量双饼 = 3.14; // 常量对象 const double *cptr = &pie; // 指向 const 对象的指针 双 *ptr = &pie; // 错误 - 指向 const 的非 const 指针 //

回答 2 投票 0

std::shared_ptr::reset 的目的是什么?

这是一个基本问题,但我没有找到以前的帖子。以下问题的标题听起来可能和我的问题相同,但问题本身不匹配...

回答 4 投票 0

在 C++ 中使用 enum 代替 struct 进行标签调度

让我们从标准库中实现 std::unique_lock : struct defer_lock_t { 显式 defer_lock_t() = 默认; }; struct try_to_lock_t { 显式 try_to_lock_t() = 默认; };

回答 2 投票 0

为什么不带 undef 的宏重定义会导致程序格式错误

按照标准,在没有使用#undef之前禁止宏重定义: 但以下重新定义无效: #define OBJ_LIKE (0) // 不同的标记序列 #定义

回答 2 投票 0

NAN 框负整数

我一直在关注这篇文章,它解释了 nan boxing https://piotrduperas.com/posts/nan-boxing 并尝试用我自己的“语言”来实现它。 类型定义联合{ uint64_t as_uin...

回答 1 投票 0

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