有关编程语言和环境的正式或权威规范的复杂性的问题。
`static_cast<const bool&>` 与 `显式运算符 bool`
请考虑以下事项: 结构体C { 显式运算符 bool() const { 返回真; } }; int main() { Cc; 自动 b = static_cast(c); 返回0; }
我用c++23编写了以下程序。这里我重载了成员函数。但对于所有情况,不同的编译器给出不同的结果,如下面的注释所示。正如你所看到的,我有三个...
我用c++23编写了以下程序。这里我重载了成员函数。但对于所有情况,不同的编译器给出不同的结果,如下面的注释所示。正如你所看到的,我有三个...
GCC 拒绝引用限定成员函数和非引用限定成员函数之间的重载是否正确?
如果我理解正确的话,[over.load]在c++23中不存在,所以我在[over.load]/2.3中读到的内容应该不再是真的,所以这段代码 结构体 Foo { int const& bar() const; int b...
今天我偶然发现了 Rust 运算符/方法查找的以下奇怪之处: 使用 std::ops::Add ; 使用 std::fmt::调试; #[导出(调试)] 结构 Foo(i32); 为 &Foo{ 实现添加 输入输出 =...
我很好奇。有谁知道一个非假设的 C 或 C++ 反例来反驳“未定义行为的影响仅限于在未定义行之后运行的代码”的神话
拥有类X,以下对象初始化: 新(ptr)X(X()); 即使从 C++17 开始,也需要一个可访问的析构函数。为什么会这样,当对象被默认构造函数初始化的时候...
对于任何empty()向量来说,begin()==end()吗?
我长期以来一直假设对于任何空的 std::vector V,V.begin() == V.end()。但我在 C++ 规范中没有看到任何内容表明这一点始终正确。这一定是真的还是只是偶然......
在最近的这个问题中,一些代码显示出具有未定义的行为: a[++i] = foo(a[i-1], a[i]); 因为即使 foo() 的实际调用是一个序列点,但赋值是不序列的...
显式使用此成员函数,被 msvc 接受,但被 clang 和 gcc 拒绝
我写了下面的程序,用msvc编译,但被clang和gcc拒绝。它使用显式对象成员函数。演示。 #包括 结构体C{ int f(这个 int); }; 拒绝...
显式使用此成员函数,被 msvc 接受,但被 clang 和 gcc 拒绝
我写了下面的程序,用msvc编译,但被clang和gcc拒绝。它使用显式对象成员函数。演示。 #包括 结构体C{ int f(这个 int); }; 拒绝...
从 lambda 函数获取 constexpr 变量是可以的,但是当此类语句位于新的 lambda 中时,编译会失败(Visual C++)并且罚款(gcc)
此代码在 gcc 中编译良好,但在 Visual C++ 中编译失败。 MCVE = https://wandbox.org/permlink/SqNI85EospSrwm5T int main() { 自动 func_do1Pass2=[&]() { 返回8; }; constexpr 我...
我正在摆弄一些我在 Reddit 上看到的小代码片段,这让我想知道 - 这段代码实际上合法并且符合 C++23 标准吗? 看起来,所有...
在 UML 2.5.1 规范中,第 22 节“标准配置文件”,第 14 页。 PDF 文件的第 721 节中写道:“标准配置文件指定了一组预定义的标准构造型。一个配置...
我有两个类 st 和 foo: 结构体{ st() = 默认值; st(常量 st&) { std::cout << "copy ctor." << std::endl; } st(st&&) { s...
我有两个类 st 和 foo: 结构体{ st() = 默认值; st(常量 st&) { std::cout << "copy ctor." << std::endl; } st(st&&) { s...
我有这个例子: #包括 #define print(X) std::cout << X << std::endl struct B1 { B1(int _i = 5): i(_i) { print("B1 constructor"); }; int i; };
我有这个例子: #包括 #define print(X) std::cout << X << std::endl struct B1 { B1(int _i = 5): i(_i) { print("B1 constructor"); }; int i; };
std::可选<std::unique_ptr<int>> 不是 constexpr?
为什么下面的方法不是constexpr? constexpr std::可选> test2(void) { 返回 std::nullopt; } Clang 给我以下错误: [构建] /.../<>...
c++ std::可选<std::unique_ptr<int>> 不是 constexpr?
为什么下面的方法不是constexpr constexpr std::可选> test2(void) { 返回 std::nullopt; } Clang 给我以下错误: [构建] /.../<>...