temporary-objects相关内容

非常量引用绑定到临时的 Visual Studio 错误?

我在 gcc 中编译一些可移植代码时遇到了这个问题.基本上这个奇怪的代码在 Visual Studio 中编译,这真的让我大吃一惊: class Zebra {int x;};斑马 goo() {斑马 z;返回z;}void foo(斑马 &x){斑马 y;x = y;富(咕());} Visual Studio 让这个飞起来.gcc 会将此作为编译错误捕获.有趣的是,如果你将 Zebra 类 ..
发布时间:2022-01-30 16:33:23 C/C++开发

临时对象最初是 const 吗?

这个代码是 UB 吗? 结构 A{无效非常量(){}};常量 A&a = A{};const_cast(a).nonconst(); 换句话说,(临时)对象最初是const吗?我浏览了标准,但找不到答案,因此希望能引用相关部分的内容. 编辑: 对于那些说 A{} 不是 const 的人,那么你能做到 A{}.nonconst() ? 解决方案 引用a的初始化由[dcl.i ..

我是否正确地说 const_cast 然后修改绑定到临时的 ref-to-const 可以吗?

我想检查一下我对此事的理解和结论. 在 IRC 上,有人问: const_cast 是否可以接受绑定到临时对象的 const 引用? 翻译:他有一个 ref-to-const 绑定到一个临时的,他想抛弃它的 const-ness 来修改它. 我的回答是我问过 a之前类似的问题,其中的共识似乎是临时人员本身并不是天生的const,因此您可以摆脱引用的const-ness您必须 ..
发布时间:2022-01-23 23:43:02 C/C++开发

我说 const_cast 然后修改绑定到临时对象的 ref-to-const 是对的吗?

我想检查一下我对此事的理解和结论. 在 IRC 上,有人问: const_cast 是否可以接受绑定到临时对象的 const 引用? 翻译:他有一个 ref-to-const 绑定到一个临时对象,他想抛弃它的 const-ness 来修改它. 我的回答是我问了a之前类似的问题,其中的共识似乎是临时变量本身并不是固有的 const,因此您可以摆脱引用的 const-ness你 ..
发布时间:2022-01-05 12:04:23 C/C++开发

在函数作用域(生命周期)之后,对临时对象的 const 引用被破坏

在问这个问题时,我学会了const引用到临时对象在 C++ 中是有效的: int main(){整数 a = 21;整数 b = 21;//错误:非常量引用的初始化无效//int &总和 = a + b;e [...]//行int const &总和 = a + b;返还金额;} 但是在下面的例子中,const 引用 refnop 引用了一个被破坏的临时对象.我想知道为什么? #includ ..
发布时间:2022-01-04 11:34:45 C/C++开发

std:ostringstream 和 -std=c++11 的内存错误?

编辑:感谢所有指出问题并在 Stack Overflow 上讨论过的人.我自己投了最后一票. 一个相关的问题:ostringstream 或 ostringstream::str 状态它是一个临时的.怎么这么多人知道?还是我应该查阅不同的文档? 我在带有 GCC 4.7.2、-std=c++11 和 std::ostringstream 的 Debian 7.3 (x64) 下的内存错 ..
发布时间:2021-12-31 08:22:59 C/C++开发

绑定到临时的 Visual Studio 错误的非常量引用?

我在 gcc 中编译一些可移植代码时遇到了这个问题.基本上这个奇怪的代码在 Visual Studio 中编译,这真的让我大吃一惊: class Zebra {int x;};斑马 goo() {斑马 z;返回 z;}void foo(Zebra &x){斑马 y;x = y;foo(goo());} Visual Studio 让这个飞起来.gcc 会将其作为编译错误捕获.有趣的是,如果您将 ..
发布时间:2021-12-01 15:27:14 C/C++开发

重载运算符->当 operator* 返回临时值时

我有两个具有以下结构的类: struct A {一个转换()常量;};结构体 B {//返回一个临时 A运算符*() const;}; * 运算符在这里可能看起来有点奇怪,但考虑到它的使用上下文实际上非常自然.事实上,B 的存在只是为了为嵌入式语言提供一些语法糖,因此它的方法和运算符旨在为代码提供所需的外观.给定B b,获取关联的A 很快,*b.有时我想立即调用 A 上的转换.目前,这需要一些 ..
发布时间:2021-06-12 20:41:00 C/C++开发

不是完整表达式的语句

经常听到在C ++中,临时对象在 full-expression 的末尾被解构. full-expression 被定义为不是某些其他表达式的子表达式的表达式.这听起来与我的声明的概念非常相似. 所以我的问题是:如果我在 full-expression 后面加上分号,它将始终是声明吗?可以通过在结尾加上分号的陈述并删除该分号来得出每个 full-expression .我可以假设每个临时文件 ..
发布时间:2021-05-06 19:47:20 C/C++开发

以下示例给出的构造有什么不幸?

"15.6.2初始化基和成员"(N4713)节具有以下第11项的示例: 结构A {A()=默认值;//好的A(int v):v(v){}//确定const int&v = 42;//好的};A1;//错误:临时表到引用的格式不正确的绑定a2(1);//好吧,不幸的是 示例最后一行中的构造有什么不幸? 我在整个参考书中搜索了其他允许的“不幸"行为的出现,但没有找到. 如果在此特定情 ..
发布时间:2021-04-24 19:24:08 C/C++开发

wstring :: c_str()包含垃圾

我有一个std::wstring decode(const char *s)函数. 我这样使用它: const char *src = "some string"; const wchar_t *result = decode(src).c_str(); 我总是在result[0]中得到垃圾,有时也在result[1]中得到垃圾. 当我以其他方式使用它时,我不会得到垃圾: ..
发布时间:2020-07-10 22:57:59 C/C++开发

Lambda通过引用捕获右值引用

下面的代码标准正确吗? ( godbolt ) 即by-ref捕获表示临时引用的转发引用,并从函数在同一表达式内返回结果的lambda按值. 当然,存储lambda供以后使用会使它包含一个悬挂的引用,但是我指的是main内部的确切用法. 我对此SO答案以及可能的“标准引用中的引用捕获生存期规则捕获了变量,而不是数据及其作用域". –这似乎表明捕获的对临时变量的引用在以下情况下可能 ..
发布时间:2020-07-10 22:57:53 C/C++开发

Rust中涉及临时人员的销毁顺序

在C ++中(如果错了,请纠正我),通过常量引用进行的临时绑定应该比它绑定的表达式的寿命更长.我以为在Rust中也是如此,但是在两种不同的情况下,我会得到两种不同的行为. 考虑: struct A; impl Drop for A { fn drop(&mut self) { println!("Drop A.") } } struct B(*const A); impl Drop ..
发布时间:2020-07-10 22:57:22 其他开发