gpt4 book ai didi

c++ - 你如何赋予构造函数生成的右值一个左值的生命周期?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:56 25 4
gpt4 key购买 nike

while(model.condition) {
auto data = yield_data();
auto _= manipulate(model, data);
model.get_info(args);
}

我有一个 manipulate 类型的 RAII 对象,当它超出范围时,其析构函数会撤消它引起的突变,很像 std::lock_guard。问题是用户必须键入 auto _= 否则析构函数将在 model.get_info() 之前被调用;我不喜欢用户必须键入 auto _=。为什么用户会想创建一个从未使用过的对象?

我的第一个想法是让构造函数[[nodiscard]];但是构造函数没有返回值。有没有办法告诉编译器操作右值应该有左值生命周期?

最佳答案

std::lock_guard 也是一个 Unresolved 问题,如果您忘记给它命名,就会出现错误。

这里有一些技巧:How to avoid C++ anonymous objects

有关此问题和其他陷阱的讨论链接在这里:Different behavior when `std::lock_guard<std::mutex>` object has no name

关于c++ - 你如何赋予构造函数生成的右值一个左值的生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55611168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com