有关编程语言和环境的正式或权威规范的复杂性的问题。
isSubstitutable 属性是否意味着指定一个类及其泛化符合里氏替换原则(LSP)?如果没有,是否有一种简单的方法来指定
要在派生类模板中使用依赖基类的名称(例如 B),必须向编译器添加一个突出显示的前缀,该前缀是依赖名称(B::)。并避免做...
UML 2.5.1 规范可在 OMG 网站上免费下载,但没有具体说明 GeneralizationSet 的理想所有者元素应该是什么。我们有以下选择:
std::memmove() 从一个工会成员到另一个工会成员是否合法?
此代码尝试将内存内容重新解释为不同的类型,而不违反严格的别名规则。 建议作为“使用 std::memmove 解决严格问题的答案”
在试图弄清楚我对存储类的想法时,我写了以下片段: #包括 模板 T pi; 模板<> extern int pi; ...
requires 表达式可以使用参数列表引入局部参数。如果这些参数中的任何一个具有 void 类型,则 require 表达式是否会产生 false 还是应该进行硬编译...
在 C++ 中,我可以使用带有自定义分隔符的字符串文字,例如 R"str-end(...verylong...)str-end";。当 Visual Studio 吐出编译器错误 C2026“字符串太大,
我想了解普通数组定义中不同alignas说明符位置的有效性: constexpr std::size_t 必需=16; alignas(必需) int iarr1[10]; // 1 intalignas(重新...
这个节目 结构体A { 整数 i = 0; constexpr 运算符 int() const { return i; } constexpr 运算符 int&() { return ++i; } }; 结构体 B { 一个一个; 布尔运算符 ==(const B &) ...
在 UML 2.5.1 规范的第 180 页,第 9.9.7.4 节“泛化属性”下,如果空布尔值 c...
在下面的示例中,如果将 auto 更改为 void,程序将打印 1 而不是 0。为什么会发生这种情况。这里适用什么查找规则? #包括 结构 X { 操作...
让我们考虑以下代码(编译器资源管理器): #包括 #包括 #包括 结构数据 { //数据() {} // 待办事项 整数值; }; 自动测试() {
类型双关指针可互转换类型在 C++23 中是否免受严格别名限制?
我试图根据 C++23 规范确定如下代码是否合法: #包括 模板 结构 S { 整数x; 无效去(){ ++x; ...
以下代码可以使用 g++ 14.2 和 clang++ 18.1 进行编译,但可以使用 MSVC 17.10 (GodBolt) 进行编译。 基类{ 民众: 使用峰值 = 基值; 基数()=默认值; }; 派生类:公共基类{ 保护...
以下代码在 C++ 的在线 GDB 编译器中按预期进行编译, 但是,我无法纠正 VS Code 中的问题。 旁注:我对学习 C++ 很陌生。 代码: #包括
C++23 中的不同翻译单元中是否允许多个相同的非内联 constexpr 变量定义?
C++23 规定 constexpr 函数和静态数据成员是隐式内联的,但对于命名空间范围的 constexpr 变量却没有这样规定。 它还说:“对于任何可定义的......
C++23 是否允许在不同的翻译单元中对命名空间范围的非内联变量进行多个定义?
在 C++ 的旧版本(例如 C++17)中,单一定义规则在较高级别上很直观,因为它只允许对变量进行一次定义。 例如: 每个程序应准确包含...
考虑以下代码: #包括 #包括 #包括 #包括 模板 布尔 foo(const
如果我们不使用换行符来结束源文件,而只是在 main() 之后使用 },那么 clang 编译器(在严格模式下) -std=c17 -pedantic-errors) 臭名昭著地抱怨: 错误:
在未构造的对象上调用 std::destroy_at 是否有效?
当我在 cppref 阅读 std::construct_at 的示例代码时,我注意到 std::destroy_at 是在未初始化的缓冲区上调用的: alignas(S) 无符号字符存储[sizeof(S)]{}; S 未初始化...