#ifndef FURVM_DETAIL_HANDLE_HPP #define FURVM_DETAIL_HANDLE_HPP #include #include namespace furvm { namespace detail { /** * @brief Default specialization for header_has_refcount type trait. */ template struct header_has_refcount : std::false_type {}; /** * @brief Specialization for header_has_refcount type trait. */ template struct header_has_refcount().acquire()), decltype(std::declval().release()), decltype(std::declval().reference_count())>> : std::true_type {}; /** * @brief An alias for header_has_refcount's value. */ template static constexpr auto header_has_refcount_v = header_has_refcount
::value; template > struct handle_hash { std::size_t operator()(const Handle& handle) const { return IdHash{}(handle.id()); } }; } // namespace detail } // namespace furvm #endif // FURVM_DETAIL_HANDLE_HPP