fork(1) download
  1. #include <iostream>
  2. #include <map>
  3. using namespace std;
  4.  
  5. template <typename T1, typename T2>
  6. void swap_pair(std::pair<T1, T2>& pair)
  7. {
  8. T2 tmp(std::move(pair.first));
  9. pair.first = std::move(pair.second);
  10. pair.second = std::move(tmp);
  11. }
  12.  
  13. template <typename K, typename V>
  14. void swap_map(std::map<K, V>& map)
  15. {
  16. for (auto& kv_pair : map)
  17. swap_pair(kv_pair);
  18. }
  19.  
  20. int main() {
  21. std::map<int, int> foo;
  22. swap_map(foo);
  23. return 0;
  24. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In instantiation of ‘void swap_pair(std::pair<_T1, _T2>&) [with T1 = const int; T2 = int]’:
prog.cpp:17:20:   required from ‘void swap_map(std::map<K, V>&) [with K = int; V = int]’
prog.cpp:22:14:   required from here
prog.cpp:9:13: error: assignment of read-only member ‘std::pair<const int, int>::first’
  pair.first = std::move(pair.second);
             ^
stdout
Standard output is empty