【发布时间】:2020-02-28 12:51:53
【问题描述】:
假设我有类似于这个伪代码的东西:
std::optional<std::pair<double*, std::scope_lock<std::mutex> > > getDataTogetherWithLock() {
if (!some_ptr) {
return std::nullopt;
}
return some_ptr->getDataTogetherWithLock();//just returns std::pair<double*, std::scope_lock<std::mutex> >
}
这行不通,基本上如果用真实代码尝试会报返回类型不能转换为std::optional的错误。
解决这个难题的最佳方法是什么?
【问题讨论】:
-
您特别说不可复制。但这可能是移动更合适的情况。
-
@MSalters 我会说搬家很好 - 但如何?
-
同意 - 如果您对移动感到满意,请发布一个最小示例。当然不必编译,但它不应该编译,因为与您的实际示例完全相同的错误。
标签: c++ c++17 noncopyable stdoptional