关于在执行不合格调用时使用名称与使用命名空间的歧义
我知道这会是不明确的, #include #include #include int main() { std::vector v{1,2,3}; using namespace boost::hana; using namespace ranges; eq…
GCC 上有不明确的构造函数重载,但 Clang 上没有
假设我们有以下简单的代码: #include #include struct S { template explicit S(T) noexcept requires std::is_signed::value { std::cout << "T\n";…
在存在歧义的情况下,指针可相互转换的对象之间的转换如何工作?
标准 ([expr.static.cast#13])说: “指向 cv1 void 的指针”类型的纯右值可以转换为“指向 cv2 T 的指针”类型的纯右值。 [...] 如果原始指针值指向…
C 中的初始化列表和序列点
C 标准规定,在完整的末尾有一个序列点 然而,这 initializer: assignment-expression { initializer-list } { initializer-list , } initializer-lis…
P2300R4 中的执行上下文是什么?
我指的是 P2300R4 ,鉴于我目前的水平,这是漫长而困难的,但我想了解更多。 它从一开始就引用执行上下文 §1.简介 本文提出了一种标准 C++ 框架的独立…
用户定义的基本类型转换可以删除吗?
template struct IntegralWrapper { Integral _value; IntegralWrapper() = default; IntegralWrapper(Integral value) : _value(value) {} operator …
为什么使用原始“int”的“Comparator”在这段代码中起作用?如果自动装箱,什么时候发生?
我将此代码编写为另一个问题的解决方案: record Person( String name , int age ) { } List persons = List.of( new Person( "Alice" , 52 ) , new P…
没有显式专业化声明的显式模板专业化
我有一个小示例代码: file foo.h: #pragma once template class FooNoDef { public: void foo(const T& value); // declared and not defined }; cla…
每个“完整”都是如此吗?对象“最原始的”目的?
根据[intro.object]/2: [..] 不是任何其他对象的子对象的对象称为完整对象 [..]。 因此,请考虑这段代码: struct Base {}; struct Derived : Base {…
C - 使用 memset 设置未定义的 _Bool 后读取 _Bool 是否已定义,实现是否已定义?
在 ISO 标准 C 中,我的理解是,没有什么可以真正确定 _Bool 的表示形式,但它确实说: “_Bool 足够大,可以容纳值 0 和 1” “当任何标量值转换为 _…
未使用的通用选择中的 _Static_assert
看起来 typeof 运算符可能会被下一个 C 标准所接受,我一直在寻找是否有一种方法可以利用它来创建一个使用可移植 ISO-C 的宏,该宏可以得到传递给它的…
在结构化绑定定义中引入了中间变量?
在 [dcl.struct.bind] 9.6 中。 4,当初始化器是带有 std :: tuple_size 的类类型时,有结构化绑定的定义。 :: value 正确定义: ...变量以唯一名称…
重载数组引用参数的编译器方差
正如预期的那样,以下程序被 GCC、Clang 和 MSVC 接受(对于各种编译器和语言版本): // #g.1: rvalue reference function parameter constexpr bool…