#ifndef ENTT_STL_FUNCTIONAL_HPP #define ENTT_STL_FUNCTIONAL_HPP /*! @cond ENTT_INTERNAL */ #if __has_include() # include #else # include # include # include "../config/config.h" namespace entt::stl { using std::equal_to; using std::function; using std::hash; using std::invoke; using std::less; } // namespace entt::stl # ifndef ENTT_FORCE_STL # if defined(__cpp_lib_ranges) # define ENTT_HAS_IDENTITY namespace entt::stl { using std::identity; } // namespace entt::stl # endif # endif # ifndef ENTT_HAS_IDENTITY # include namespace entt::stl { struct identity { using is_transparent = void; template [[nodiscard]] constexpr Type &&operator()(Type &&value) const noexcept { return std::forward(value); } }; } // namespace entt::stl # endif #endif /*! @endcond */ #undef ENTT_HAS_IDENTITY #endif