NoS*_*tAl 8 c++ stdoptional c++23
我正在使用 C++23std::optional添加,但我不知道如何优雅地访问对象的值(如果optional处于活动状态)。
我知道我可以使用if,但这就是C ++20 。
我真的很喜欢 C++23 API 的变化,但我不知道如何跳过实现身份的样板。例如:
#include <functional>
#include <iostream>
#include <optional>
void print(std::optional<std::string>& name) {
name.transform([](std::string& x) {
std::cout << x << std::endl;
// I just want to print, without modifying optional, but next line is required
return x;
});
}
int main() {
std::optional<std::string> name{{"Bjarne"}};
print(name);
}
Run Code Online (Sandbox Code Playgroud)
感觉就像std::optional缺少invoke会员功能一样。
注意:在我的示例中,我在转换后不会链接任何其他内容,但为了简洁起见,我关心可选内容是否被修改。