与编程语言的任何方面的设计相关的问题的标签。
python的设计:为什么assert是一个语句而不是一个函数?
在Python中,assert是一个语句,而不是一个函数。 根据文档,断言表达式1,表达式2相当于 如果__调试__: 如果不是表达式1: 引发断言错误(
我正在开发一种基于数学的编程语言(用 Rust 编写),它使用集合而不是类型。其中,变量或值属于一组值(例如 x : {1, 2, 3} 或 msg : Str)。那个...
YAML 规范明确指出: 映射使用冒号和空格(“:”)来标记每个键:值对。 所以这是合法的: 富:酒吧 但这不是: 富:酒吧 我看到网上很多人在吐槽...
我正在阅读这个问题的答案什么是Python中的元类?当我了解到 Python 中的类不必使用 class 关键字创建时。例如,引用前面的内容...
我正在阅读这个问题的答案什么是Python中的元类?当我了解到 Python 中的类不必使用 class 关键字创建时。这让我想知道:我到底...
比方说,我们创建了 C 的重新实现,唯一的区别是 类型是推断出来的。存储类和修饰符仍然需要 给定(常量、静态、限制等),并且 l...
为什么标准只要求 std::distance 的输入迭代器,而不是前向迭代器?
我很困惑地发现 std::distance 的模板参数要求是 LegacyInputIterator 而不是 LegacyForwardIterator。 由于仅输入迭代器没有多遍
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++ 源文件。 链式比较运算符是当你有