cost 105 ms
对不完整类型使用 std::function 是否有效? - Is it valid to use std::function with incomplete types?

我想知道使用不完整类型的std::function是否有效,例如在前向声明的情况下。 我写了这个小代码: 即使S在声明m时不完整,我也可以将返回类型声明为完整类型(非指针返回类型)。 此代码符合要求并正常工作,但我不确定此代码是否符合标准。 因为如果返回类型不是普通函数中的指针,则不能转发声明返回 ...

使用没有外部定义的外部链接声明并在 _Generic 中使用的标识符是否违反语义? - Does an identifier declared with external linkage w/o external definition and used in _Generic violate semantics?

来自最新的C2x (6.9p5)(添加了重点): 外部定义是外部声明,它也是 function(内联定义除外)或 object 的定义。如果在表达式中使用使用外部链接声明的标识符(而不是作为 typeof 运算符的操作数的一部分其结果不是可变修改类型,或结果不是 integer 常量表达式的 si ...

概念由看似会产生无效表达式的类型满足 - Concept is satisfied by a type that would seemingly produce an invalid expression

在下面的代码中, can_foo概念测试是否可以在类型的实例上调用foo()成员 function。 我将使用它来测试两个模板的实例: base有条件地启用foo成员 function, derived覆盖foo以调用其 base 的实现:template <typename T> co ...

Function 声明必须可用,因为 arguments 都不依赖于模板参数 - Function declaration must be available as none of the arguments depend on a template parameter

以下代码在 trunk gcc 和 clang 中编译良好,但在 msvc for c++20 模式中失败: 与消息: 适用于 c++17 模式的 msvc,因为/permissive-自 c++20 以来仅在默认情况下可用。 可以通过显式指定模板类型轻松修复 msvc c++20,即f<T& ...

关于 std::vector 中不完整类型的混淆(或 Clang 错误?) - Confusion (or Clang bug?) about incomplete types in std::vector

[vector.overview]/4 中的 C++20 标准状态: 如果分配器满足分配器完整性要求,则在实例化 vector 时可以使用不完整类型 T。 在引用向量的结果特化的任何成员之前,T 应该是完整的。 默认分配器std::allocate确实满足allocator completene ...

序列点之间能否多次读取volatile变量? - Can volatile variables be read multiple times between sequence points?

我正在制作自己的 C 编译器,以尝试了解有关 C 的尽可能多的细节。我现在正试图准确了解volatile对象的工作原理。 令人困惑的是,代码中的每个读取访问都必须严格执行(C11,6.7.3p7): 具有 volatile 限定类型的 object 可能会以实现未知的方式进行修改或具有其他未知的副 ...

`T array[N]{}` 是值初始化还是聚合初始化? - Is `T array[N]{}` a value initialization or aggregate initialization?

考虑一些类型T (为简单起见,您可以假设为int )和一些整数常量N ,我们用它来定义这样的数组: 根据cppreference ,值初始化定义如下: 这是在使用空初始化器构造 object 时执行的初始化。 但再往下写: 在所有情况下,如果使用空括号 {} 并且 T 是聚合类型,则执行聚合初始化 ...

显式调用 __call__ 有效并使用 __init__ - Explicit call to __call__ works and uses __init__

我正在学习 Python 3.X 中的重载,为了更好地理解该主题,我编写了以下在 3.X 中有效但在 2.X 中无效的代码。 我预计下面的代码会失败,因为我没有为 class Test定义__call__ 。 但令我惊讶的是,它有效并打印出"constructor called" 。 演示。 所以 ...

Niebloids 可以在需要 Callables 的地方传递吗? - Can Niebloids be passed where Callables is required?

一般来说,除非明确允许,否则 C++ 程序尝试获取标准库 function 的指针的行为是未指定的。 这意味着在将它们作为Callable传递之前应格外小心。 相反,通常最好将它们包装在 lambda 中。 有关该主题的更多信息: 我可以获取标准库中定义的 function 的地址吗? 然而,C+ ...

在 C++ 中,我可以将单成员联合数组视为元素数组吗? - In C++ can I treat an array of single-member unions as an array of the element?

假设我正在编写一个运行时大小固定大小的数组 class,有点类似于 Rust 的Box<[T]> ,以便在我知道数组在初始化后不会更改大小时节省跟踪容量的空间。 为了支持没有默认构造函数的类型,我希望能够允许用户提供一个生成器 function,它获取元素的索引并生成一个T 。 为了做 ...

为什么 `int (*)(float)` 指向 `int foo()` 会触发警告,而 `int (*)(double)` 指向它却不会? - Why does having an `int (*)(float)` point to an `int foo()` trigger a warning, but having an `int (*)(double)` point to it doesn't?

我有这段代码:int foo() { return 0; } int main() { int (*float_function)(float) = foo; } 当使用x86-64 GCC 12.2和-Wall编译时,它会产生警告(链接): 警告:从不兼容的指针类型“int (*)() ...

是否允许编译器在栈上的一个object出scope时不收回栈指针? - Is the compiler allowed to not retract the stack pointer when an object on the stack goes out of scope?

我使用的是 Raspberry Pi Pico,它有两个内核,都有一个 4KB 堆栈,core0 在 core1 之上,这样 core0 在单线程应用程序中就有 8KB 的堆栈。 引发这个问题的要点如下: 这里我们在堆栈上分配了 4KB,“而我们有 8KB 的堆栈”。 然后我们从 scope 中得 ...

匿名结构中的常量引用成员变量是否会延长临时变量的生命周期? - Does a constant reference member variable in an anonymous struct extend the lifetime of a temporary?

考虑以下代码: 因此GetTemp()返回一个临时值 object,然后将其分配给常量引用变量。 但是,该常量引用变量是匿名局部结构的成员。 问题:C++ 标准是否保证临时对象的生命周期会延长到循环终止之后? 考虑到这个问题,我本以为答案是否定的,即我在循环体中得到了一个悬空引用。 然而, gcc ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM