language-lawyer 相关问题

有关编程语言和环境的正式或权威规范的复杂性的问题。

UML 类图中的里氏替换原则 (LSP)

isSubstitutable 属性是否意味着指定一个类及其泛化符合里氏替换原则(LSP)?如果没有,是否有一种简单的方法来指定

回答 1 投票 0

使用声明从基类模板引入依赖名称

要在派生类模板中使用依赖基类的名称(例如 B),必须向编译器添加一个突出显示的前缀,该前缀是依赖名称(B::)。并避免做...

回答 1 投票 0

UML 和 GeneralizationSet 的所有权

UML 2.5.1 规范可在 OMG 网站上免费下载,但没有具体说明 GeneralizationSet 的理想所有者元素应该是什么。我们有以下选择:

回答 1 投票 0

std::memmove() 从一个工会成员到另一个工会成员是否合法?

此代码尝试将内存内容重新解释为不同的类型,而不违反严格的别名规则。 建议作为“使用 std::memmove 解决严格问题的答案”

回答 1 投票 0

全局/命名空间范围内变量模板的存储类

在试图弄清楚我对存储类的想法时,我写了以下片段: #包括 模板 T pi; 模板<> extern int pi; ...

回答 1 投票 0

需要带有 void 类型局部参数的表达式

requires 表达式可以使用参数列表引入局部参数。如果这些参数中的任何一个具有 void 类型,则 require 表达式是否会产生 false 还是应该进行硬编译...

回答 1 投票 0

C++ 是否保证字符串文字的最小字符串长度?

在 C++ 中,我可以使用带有自定义分隔符的字符串文字,例如 R"str-end(...verylong...)str-end";。当 Visual Studio 吐出编译器错误 C2026“字符串太大,

回答 1 投票 0

普通数组定义中 `alignas` 的有效位置

我想了解普通数组定义中不同alignas说明符位置的有效性: constexpr std::size_t 必需=16; alignas(必需) int iarr1[10]; // 1 intalignas(重新...

回答 1 投票 0

(x != x) 默认相等运算符==

这个节目 结构体A { 整数 i = 0; constexpr 运算符 int() const { return i; } constexpr 运算符 int&() { return ++i; } }; 结构体 B { 一个一个; 布尔运算符 ==(const B &) ...

回答 1 投票 0

UML 泛化::isSubstitutable()

在 UML 2.5.1 规范的第 180 页,第 9.9.7.4 节“泛化属性”下,如果空布尔值 c...

回答 1 投票 0

自动返回类型如何影响名称查找?

在下面的示例中,如果将 auto 更改为 void,程序将打印 1 而不是 0。为什么会发生这种情况。这里适用什么查找规则? #包括 结构 X { 操作...

回答 1 投票 0

GCC 的 -Wuninitialized 正确吗?

让我们考虑以下代码(编译器资源管理器): #包括 #包括 #包括 结构数据 { //数据() {} // 待办事项 整数值; }; 自动测试() {

回答 1 投票 0

类型双关指针可互转换类型在 C++23 中是否免受严格别名限制?

我试图根据 C++23 规范确定如下代码是否合法: #包括 模板 结构 S { 整数x; 无效去(){ ++x; ...

回答 1 投票 0

MSVC 拒绝使用从基类采用的基类别名委托构造函数

以下代码可以使用 g++ 14.2 和 clang++ 18.1 进行编译,但可以使用 MSVC 17.10 (GodBolt) 进行编译。 基类{ 民众: 使用峰值 = 基值; 基数()=默认值; }; 派生类:公共基类{ 保护...

回答 2 投票 0

MSVC 拒绝使用从基类采用的基类别名来委托构造函数

以下代码在 C++ 的在线 GDB 编译器中按预期进行编译, 但是,我无法纠正 VS Code 中的问题。 旁注:我对学习 C++ 很陌生。 代码: #包括

回答 1 投票 0

C++23 中的不同翻译单元中是否允许多个相同的非内联 constexpr 变量定义?

C++23 规定 constexpr 函数和静态数据成员是隐式内联的,但对于命名空间范围的 constexpr 变量却没有这样规定。 它还说:“对于任何可定义的......

回答 1 投票 0

C++23 是否允许在不同的翻译单元中对命名空间范围的非内联变量进行多个定义?

在 C++ 的旧版本(例如 C++17)中,单一定义规则在较高级别上很直观,因为它只允许对变量进行一次定义。 例如: 每个程序应准确包含...

回答 1 投票 0

为什么我不能将双反转迭代器与普通迭代器进行比较?

考虑以下代码: #包括 #包括 #包括 #包括 模板 布尔 foo(const

回答 1 投票 0

源文件是否应该以新行结尾?反斜杠+换行符怎么样?

如果我们不使用换行符来结束源文件,而只是在 main() 之后使用 },那么 clang 编译器(在严格模式下) -std=c17 -pedantic-errors) 臭名昭著地抱怨: 错误:

回答 1 投票 0

在未构造的对象上调用 std::destroy_at 是否有效?

当我在 cppref 阅读 std::construct_at 的示例代码时,我注意到 std::destroy_at 是在未初始化的缓冲区上调用的: alignas(S) 无符号字符存储[sizeof(S)]{}; S 未初始化...

回答 1 投票 0

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