language-lawyer相关内容

在统一建模语言中,对象的类可以改变吗?

简而言之 主流class-based OO languages不允许对象的类在创建后更改。我在UML中假定了同样的约束,尤其是基于UML2.5规范中的以下条款: 7.5.1:在声明包含值的元素时使用类型和重数,以约束可能包含的值的种类和数量。 9.2.3.2:分类器的实例也是其每个泛化的(间接)实例。 然而,在this answer的评论中,几位技术高超的UML专家对这一假设提 ..
发布时间:2022-04-01 13:41:48 其他开发

";subsets";在UML中确切的意思是什么?

UML 2.5.1规范没有很好地定义关键字subsets。我在6.4.2节中找到了以下内容: 约束{subsets Enda}表示应用此约束的关联端将关联端Enda子集。 请考虑下图: 直观地说,我认为这意味着: 一个人可以是零个或多个俱乐部的成员。 一个人最多只能做一个俱乐部的领导。 如果某人是某个俱乐部的领导人,则他/她也是该俱乐部的成员。 如果某人是某个俱乐部的 ..
发布时间:2022-03-10 09:36:09 其他开发

与(简单地)发生在';之前相比,';强烈发生在';之前有什么意义呢?

该标准定义了几个“在此之前发生”关系,这些关系将良好的旧“在此之前排序”扩展到多个线程: [intro.races] 11评估A仅发生在评估B之前,如果出现以下情况 (11.1)-A排在B之前,或 (11.2)-A与B同步,或 (11.3)-A在X之前,X在B之前。 [注10:在没有使用操作的情况下,在关系相同之前和简单地在关系相同之前发生。-结束语] 12评估A ..
发布时间:2022-03-07 16:51:19 C/C++开发

如果全局变量初始化两次(静态初始化,然后动态初始化),哪一次初始化开始其生命周期?

灵感来自this question。 我们知道具有非constexpr初始值设定项的全局变量会经历两种不同的";初始化: 首先,静电初始化&q;,这将对它们进行零初始化。 第二,";动态初始化";,它使用用户提供的初始值设定项。 哪些初始化启动了变量LIFEST?[basic.life]无济于事: 对象的生命周期.开始时间:.其初始化(如果有)已完 ..
发布时间:2022-03-07 16:48:08 C/C++开发

在哪个访问控制上下文中评估概念?

此问题是one 的后续问题 [temp.concept]/5表示: 概念未实例化([temp.spec])。 [ 注意:表示概念专门化的id表达式作为表达式([expr.prim.id])求值。[.]] 因此,命名概念专门化表达式可能因可访问性而具有不同的值。 如果是这样的话,我想知道表达式将在什么上下文中求值: 概念定义的上下文; 表达式的上下文; 表达式 ..
发布时间:2022-03-07 16:45:26 C/C++开发

标准库类型和内置类型允许重载运算符+吗?

是否允许在不存在这样的重载操作符时重载运算符,如operator+用于标准库类型和内置类型的组合? 例如,在默认命名空间或自定义命名空间中实现以下运算符是否合法: std::string operator+(const std::string& s, int right) { ... } 我知道std::命名空间中的实现有各种限制,但我不清楚是否有针对上述限制的规则(这是否是个好主 ..

结构化绑定和转发引用能很好地混合吗?

我知道我可以做到 auto&& bla = something(); 根据something返回值的const程度,我会为bla获取不同的类型。 这是否也适用于结构化绑定的情况,例如 auto&& [bla, blabla] = something(); 我想是的(结构化绑定搭载在auto初始值设定项上,其行为如下),但我找不到明确的“是”。 更新:初步测试似乎达到 ..

复制省略用于列表初始化,它在标准中规定在哪里?

[dcl.init]/17.6中明确写到,初始化圆括号时,会发生副本省略: 如果初始化器表达式是prvalue,并且源类型的cv非限定版本与目标的类相同,则初始化器表达式用于初始化目标对象。[ 示例:T x=T());调用T默认构造函数初始化x。 - 结束示例 ] 但是在列表初始化的情况下(上面的段落不适用),我没有发现任何类似的东西。请参见[dcl.init.list]。 那么 ..

通过下标获取一个过去的数组元素的地址:C++ 标准是否合法?

我已经看到它多次断言 C++ 标准不允许以下代码: int 数组[5];int *array_begin = &array[0];int *array_end = &array[5]; &array[5] 在这种情况下是合法的 C++ 代码吗? 如果可能的话,我想要一个参考标准的答案. 知道它是否符合 C 标准也很有趣.如果它不是标准 C++,为什么决定将其与 array + 5 ..
发布时间:2022-01-31 09:56:06 C/C++开发

是否存在“未定义行为"?真的允许*任何事情*发生吗?

“未定义行为"的经典杜撰示例;当然是“鼻恶魔".— 物理上不可能,无论 C 和 C++ 标准允许什么. 因为 C 和 C++ 社区倾向于强调未定义行为的不可预测性以及允许编译器在遇到未定义行为时使程序按字面意思执行任何事情的想法,我曾假设该标准对未定义行为的行为没有任何限制. 但是C++ 标准中的相关引用似乎是: [C++14: defns.undefined]: [..] 允许 ..
发布时间:2022-01-31 09:34:41 C/C++开发