我是否做了一个悬置的参考
Did I make a dangling reference?
通常,我会省略std::vector
,但这需要使我的函数采用const int&
。我想知道的是,如果我有一个悬挂的参考,那么就有一个临时向量。修改其元素安全吗?
#include <iostream>
#include <vector>
void foo(int& i)
{
i = 42;
}
void foo(int&& i)
{
std::cout << "int&&";
}
int main()
{
for (auto&& i : std::vector<int>{1, 2, 3})
{
foo(std::forward<decltype(i)>(i));
}
}
由于ranged for语句的定义方式,临时vector
在循环的整个生命周期内都能生存。因此,这里没有悬空引用,您的程序是安全的。修改掉。
相关文章:
- 在决定是通过参考还是通过价值时,尺寸真的是一个问题吗
- 我可以有一个 ELI5 作为参考和指针以及何时使用它们吗?
- 是否有必要使用 std::move?这不是已经是一个右值参考了吗?
- 在VSCode中编译C++给了我一个未定义的参考
- 我对C++程序有一个未定义的参考,不知道如何处理它
- 调用gluPerspective和gluLookAt给了我一个不确定的参考
- 为什么要拿参考的地址给我一个第二等级的指针
- 为什么``polymorphic_allocator`取一个emore _ resource`指针''而不是参考
- 常量参考延长对象的寿命,然后是const_cast,这是一个好主意吗?
- 从指针参考C 创建一个新对象
- 一种体面的方式来转换const列表参考参数,然后传递到另一个函数
- 如果我创建一个模板类,而不是其他我将参考(指针)发送到该类的类
- 声明模板会员参考另一个类的模板成员数组
- 我已经创建了一个精灵的否,并以相同的参考将它们添加到场景中,现在,如何使用标签删除它们
- 查找从列表到一个参考列表的最接近点
- 参考数据会在const函数中更改另一个数据成员
- 第一个C 库:我不确定在哪里参考并声明我的变量
- 我是否做了一个悬置的参考
- 传递参考与价值:Java是一个混合体吗
- 为什么堆栈中的值甚至不更新,它是一个参考