fork(2) download
  1. #include <iostream>
  2. #include <map>
  3. #include <set>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. template<typename K>
  9. struct KF {
  10. K&& k;
  11.  
  12. template <typename V>
  13. friend bool operator==(const typename std::pair<const K, V>& pair, const KF<K>& o) {
  14. return pair.first == o.k;
  15. }
  16.  
  17. };
  18.  
  19. template <typename K>
  20. KF<K> keyFinder(K&& k) { return KF<K>{ std::forward<K>(k) }; }
  21.  
  22. int main() {
  23. std::set<int> s{ 1, 2, };
  24. cout << (std::find(s.begin(), s.end(), 1) == s.end()) << endl; // => 0
  25. cout << (std::find(s.begin(), s.end(), 3) == s.end()) << endl; // => 1
  26.  
  27. std::map<int, int> m{ {1,10}, {2,20}, };
  28. cout << (std::find(m.begin(), m.end(), keyFinder(1)) == m.end()) << endl; // => 0
  29. cout << (std::find(m.begin(), m.end(), keyFinder(3)) == m.end()) << endl; // => 1
  30. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
0
1
0
1