在C++中关于此参数的矛盾标准
我正在学习C ++的课程。特别是,我知道此是非静态成员函数中的 prvalue 表达式。 来自 class.this#1 : 在非静态成员函数的正文中,关键字是 prvalue…
模板类没有可接受的转换
以下代码正常工作: struct A { int d; A(int _d) : d(_d) {} }; A operator+(const A& x, const A& y) { return x.d + y.d; } int main() { A x = 6;…
如果从lambda表达式生成的类没有默认的ctor,那么如何创建该生成类类型的对象
我正在使用列出的资源在这里学习C ++。特别是,我在Lippman的C ++底漆中阅读了有关 lambda表达式。在那里,我知道lambdas是功能对象。此外,lambda表…
适用于不同lambdas的三元操作员会产生不一致的结果
考虑以下使用三元运算符获取两个 lambda 的公共函数指针类型 int main() { true ? [](auto) noexcept {} : [](int) {}; } GCC-trunk 仅在 C++14 中接…
std ::变体和模棱两可的初始化
考虑以下代码: void fnc(int) { std::cout << "int"; } void fnc(long double) { std::cout << "long double"; } int main() { fnc(42.3); // error …
为什么使用“std::aligned_storage”据称会因无法“提供存储”而导致 UB?
启发:为什么要在C ++ 23中弃用STD :: Aligned_storage,而是要使用什么? 灵感 >(这将reprecect std :: Aligned_storage )说: 使用对齐_*调用未定…
是双引号(“)是预处理式的或未终止的字符串字面的?
双引号 (") 是预处理标记还是未终止的字符串文字? C11, 6.4 词法元素,语法,1: preprocessing-token: header-name identifier pp-number character-…
this 指针不能在构造函数中使用别名:
我正在学习C ++的继承。然后我遇到以下语句: 换句话说,该指针在构造函数中不能被别名: extern struct D d; struct D { D(int a) : a(a), b(d.a) {}…
关于字符集和映射的一些问题(翻译阶段1)
以下问题是关于字符集(C11,5.2.1 字符集)和映射(C11,5.1.1.2 翻译阶段,1)。 列表: 作为扩展的源字符集是否可以包含控制字符,代表水平制表符…
易失性指针的迭代器特征
该代码 #include #include static_assert(std::is_same_v::value_type, volatile int>); 在最新的GCC和Clang上编译,但在MSVC 2019上失败了,这似乎删…
如何将多个先前声明解析为带有 extern 的新声明?
第三 x 应该参考以下内容: #include static char x = '1'; int main(void) { char x = '2'; { extern char x; printf("%c\n", x); } } 此答案和: in…
为什么以及如何c&#x2b;&#x2B;隐式转换规则将模板转换函数与非策略区分开?
我正在尝试理解C ++中的隐式转换规则,以及为什么在以下减少情况下的两个隐式转换有所不同: // A templated struct. template struct A {}; // A tem…
为什么const在``const t&amp;'t t rvalue参考''中丢失了?
我正在开发一个模板类,并且给定传入类型 T 模板需要映射到“安全”常量引用。 (这本质上是为了避免在调用时将变异能力交给包装函数;请参阅 此处查…
为什么delete []语法存在于C&#x2b;&#x2B;?
每当有人问一个有关 delete [] 的问题时,总会有一个相当一般的“这就是C ++这样做的方式,请使用 delete [] ”的响应。来自香草c背景的来自我不明白…