【发布时间】:2021-09-02 22:53:16
【问题描述】:
我遇到了一个问题。从 lambda 函数返回 std::pair
/usr/include/c++/9/bits/stl_algo.h:4337:12: 错误:使用已删除的函数 'std::pair
& std ::pair ::operator=(const std::pair &)'
我查看了 std::pair 的 cppref ,但我没有注意到 copy operator= 不适用于这个。
我相当确定返回对的 lambdas 是可能的,那么我在下面的 sn-p 中肯定有一些误解。
std::map<int, std::string> mFileMap;
std::map<std::string, std::ifstream> files;
std::transform(mFileMap.begin(), mFileMap.end(), files.begin(),
[](const auto& arg) -> std::pair<std::string, std::ifstream> {
std::string path(arg.second);
std::ifstream stream(path);
return std::make_pair(path, stream);
});
【问题讨论】:
标签: c++