Cannot iterate over map whose elements hold a uniq_ptr
问题 The following code fails to compile: #include <iostream> #include <memory> #include <map> struct HaveUniq { std::unique_ptr<int> uniq; }; void print_hus(const std::map<int, HaveUniq>& hus) { for (const std::pair<int, HaveUniq>& p: hus) std::cout << *p.second.uniq << std::endl; } int main() { std::map<int, HaveUniq> hus; for (int i = 0; i < 10; ++i) hus[i].uniq = std::unique_ptr<int>(new int(i)); print_hus(hus); } With the following error: uniq_wtf.cpp: In function ‘void print_hus(const std: