Adapter to use IComparer within STL environment. Uses IComparer if set; otherwise, uses operator < (if available) or returns false (if not)....std::enable_if<detail::has_operator_less<Q>::value, bool >::type operator()...std::enable_if<!detail::has_operator_less<Q>::value, bool >::type operator()...