fork download
  1. #include <iostream>
  2. #include <map>
  3.  
  4. struct thing {
  5. float f[1];
  6. using key_data = std::pair<int,float&>;
  7.  
  8. struct iterator {
  9. key_data data;
  10. const key_data& operator*() { return data; }
  11. key_data *operator->() { return &data; }
  12. };
  13.  
  14. iterator begin() { return {{0, f[0] }}; }
  15. };
  16.  
  17. template<typename T> void test(T iter) {
  18. (*iter).second = 1.0; std::cout << (*iter).second;
  19.  
  20. iter->second = 2.0; std::cout << iter->second;
  21. }
  22.  
  23. int main() {
  24. std::map<int, float> fmap{{0, 0.0}};
  25. test(fmap.begin());
  26. std::cout << fmap[0];
  27.  
  28. thing f;
  29. test(f.begin());
  30. std::cout << f.f[0];
  31. }
  32.  
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
122122