临时对象的生命周期:嵌套函数调用中指向临时向量的迭代器
Lifetime of temporary object: iterator to temporary vector in nested function call
让我们假设我有这样的类:
struct QString {
//return null terminated array
std::vector<char> toLocal8Bit() const;
};
struct string_view {
const char *data;
size_t len;
string_view(const char *str): data(str), len(std::strlen(str)) {}
};
和I有这样签名的函数:
void f(const string_view& str);
是否为有效代码
QString str;
f(string_view(&*str.toLocal8Bit().begin()));
?
我的意思是临时的std::vector何时会被销毁?
在完整语句结束时销毁临时变量。这是安全的
相关文章:
- std::向量迭代器和调整大小/保留的奇怪/有趣行为
- 如何取消引用向量迭代器
- Map中的(字符串的)向量迭代器
- C++将向量迭代器转换为索引
- 无法取消引用超出范围的向量迭代器 - 有什么问题?
- 向量迭代器不兼容的错误,用于保存另一个向量的迭代器的向量
- C++向量迭代器nth_element编译错误
- 无法查找值初始化的向量迭代器?
- STD ::向量迭代器类型和允许的操作
- 向量迭代器 < 或 !=
- 向量迭代器在新对象的 push_back() 之后不兼容
- 向量迭代器对于包装器类不可取消引用(没有超出 end() 取消引用)
- C++向量迭代器不是增量的
- 使用向量迭代器的合并矢量
- 向量迭代器不可递增
- 向量迭代器进行循环
- 向量迭代器与c++不兼容
- 向量迭代器不可解引用C++
- C++将向量迭代器与实例进行比较
- 编译错误 ::向量 ::迭代器