#pragma once #include namespace utils { namespace detail { template concept HasMemberFind = requires(T container) { container.find(container.begin()->first); }; template concept HasMemberContains = requires(T container) { container.contains(*container.begin()); }; } // namespace detail template inline bool contains(const T& container, const typename T::value_type::first_type& key) { return container.find(key) != container.end(); } template inline bool contains(const T& container, const typename T::value_type& key) { return container.contains(key); } template inline bool contains(const T& container, const typename T::value_type& key) { return std::find(container.begin(), container.end(), key) != container.end(); } } // namespace utils