language-lawyer 相关问题

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

`static_cast<const bool&>` 与 `显式运算符 bool`

请考虑以下事项: 结构体C { 显式运算符 bool() const { 返回真; } }; int main() { Cc; 自动 b = static_cast(c); 返回0; }

回答 1 投票 0

不同编译器之间的显式对象成员函数差异

我用c++23编写了以下程序。这里我重载了成员函数。但对于所有情况,不同的编译器给出不同的结果,如下面的注释所示。正如你所看到的,我有三个...

回答 1 投票 0

不同编译器之间的显式成员函数差异

我用c++23编写了以下程序。这里我重载了成员函数。但对于所有情况,不同的编译器给出不同的结果,如下面的注释所示。正如你所看到的,我有三个...

回答 1 投票 0

GCC 拒绝引用限定成员函数和非引用限定成员函数之间的重载是否正确?

如果我理解正确的话,[over.load]在c++23中不存在,所以我在[over.load]/2.3中读到的内容应该不再是真的,所以这段代码 结构体 Foo { int const& bar() const; int b...

回答 1 投票 0

为什么在运算符方法查找期间不考虑引用类型?

今天我偶然发现了 Rust 运算符/方法查找的以下奇怪之处: 使用 std::ops::Add ; 使用 std::fmt::调试; #[导出(调试)] 结构 Foo(i32); 为 &Foo{ 实现添加 输入输出 =...

回答 1 投票 0

你能找到一个由未定义行为引起的“时间旅行”的真实例子吗?

我很好奇。有谁知道一个非假设的 C 或 C++ 反例来反驳“未定义行为的影响仅限于在未定义行之后运行的代码”的神话

回答 1 投票 0

为什么析构函数即使在没有被调用时也需要可访问?

拥有类X,以下对象初始化: 新(ptr)X(X()); 即使从 C++17 开始,也需要一个可访问的析构函数。为什么会这样,当对象被默认构造函数初始化的时候...

回答 1 投票 0

对于任何empty()向量来说,begin()==end()吗?

我长期以来一直假设对于任何空的 std::vector V,V.begin() == V.end()。但我在 C++ 规范中没有看到任何内容表明这一点始终正确。这一定是真的还是只是偶然......

回答 4 投票 0

序列点“紧接在库函数返回之前”的结果是什么?

在最近的这个问题中,一些代码显示出具有未定义的行为: a[++i] = foo(a[i-1], a[i]); 因为即使 foo() 的实际调用是一个序列点,但赋值是不序列的...

回答 2 投票 0

显式使用此成员函数,被 msvc 接受,但被 clang 和 gcc 拒绝

我写了下面的程序,用msvc编译,但被clang和gcc拒绝。它使用显式对象成员函数。演示。 #包括 结构体C{ int f(这个 int); }; 拒绝...

回答 1 投票 0

显式使用此成员函数,被 msvc 接受,但被 clang 和 gcc 拒绝

我写了下面的程序,用msvc编译,但被clang和gcc拒绝。它使用显式对象成员函数。演示。 #包括 结构体C{ int f(这个 int); }; 拒绝...

回答 1 投票 0

从 lambda 函数获取 constexpr 变量是可以的,但是当此类语句位于新的 lambda 中时,编译会失败(Visual C++)并且罚款(gcc)

此代码在 gcc 中编译良好,但在 Visual C++ 中编译失败。 MCVE = https://wandbox.org/permlink/SqNI85EospSrwm5T int main() { 自动 func_do1Pass2=[&]() { 返回8; }; constexpr 我...

回答 1 投票 0

显式显示此对象参数很奇怪

我正在摆弄一些我在 Reddit 上看到的小代码片段,这让我想知道 - 这段代码实际上合法并且符合 C++23 标准吗? 看起来,所有...

回答 1 投票 0

UML:标准配置文件的刻板印象

在 UML 2.5.1 规范中,第 22 节“标准配置文件”,第 14 页。 PDF 文件的第 721 节中写道:“标准配置文件指定了一组预定义的标准构造型。一个配置...

回答 1 投票 0

为什么直接初始化使用const左值引用限定转换函数?

我有两个类 st 和 foo: 结构体{ st() = 默认值; st(常量 st&) { std::cout << "copy ctor." << std::endl; } st(st&&) { s...

回答 1 投票 0

为什么直接初始化使用const左值引用限定转换函数?

我有两个类 st 和 foo: 结构体{ st() = 默认值; st(常量 st&) { std::cout << "copy ctor." << std::endl; } st(st&&) { s...

回答 1 投票 0

继承构造函数的初始化顺序

我有这个例子: #包括 #define print(X) std::cout << X << std::endl struct B1 { B1(int _i = 5): i(_i) { print("B1 constructor"); }; int i; };

回答 3 投票 0

构造函数继承中的奇怪行为

我有这个例子: #包括 #define print(X) std::cout << X << std::endl struct B1 { B1(int _i = 5): i(_i) { print("B1 constructor"); }; int i; };

回答 1 投票 0

std::可选<std::unique_ptr<int>> 不是 constexpr?

为什么下面的方法不是constexpr? constexpr std::可选> test2(void) { 返回 std::nullopt; } Clang 给我以下错误: [构建] /.../<>...

回答 1 投票 0

c++ std::可选<std::unique_ptr<int>> 不是 constexpr?

为什么下面的方法不是constexpr constexpr std::可选> test2(void) { 返回 std::nullopt; } Clang 给我以下错误: [构建] /.../<>...

回答 1 投票 0

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