typedef typename traits::hash_accessor hash_accessor; ///< Hash accessor functor
static_assert(!std::is_same< hash_accessor, cds::opt::none >::value, "hash_accessor functor must be specified" );
- /// Hash type
+ /// Hash type defined as \p hash_accessor return type
typedef typename std::decay<
typename std::remove_reference<
decltype( hash_accessor()( std::declval<T>()) )
}
};
- template <typename T, typename Traits, typename DefaultCmp = make_comparator_from_less< std::less<T>>::type >
+ template <typename T, typename Traits, typename DefaultCmp = typename make_comparator_from_less< std::less<T>>::type >
struct make_comparator_from
{
typedef typename Traits::compare compare;
template <typename T, typename Traits, bool Forced = true >
- using make_comparator = make_comparator_from< T, Traits, typename std::conditional< Forced, make_comparator_from_less< std::less<T>>, opt::none >::type >;
+ using make_comparator = make_comparator_from< T, Traits,
+ typename std::conditional<
+ Forced,
+ typename make_comparator_from_less< std::less<T>>::type,
+ opt::none
+ >::type >;
template <typename T, typename... Options>
struct make_comparator_from_option_list