More Clang fixes

This commit is contained in:
Simon Brand
2018-09-03 14:30:07 +01:00
parent 4d5453bc56
commit 6c5e6d6477

View File

@ -161,8 +161,9 @@ struct is_pointer_to_non_const_member_func<Ret (T::*) (Args...) volatile&> : std
template <class T, class Ret, class... Args>
struct is_pointer_to_non_const_member_func<Ret (T::*) (Args...) volatile&&> : std::true_type{};
template <class T> struct is_ref_to_const : std::false_type{};
template <class T> struct is_ref_to_const<T const&> : std::true_type{};
template <class T> struct is_const_or_const_ref : std::false_type{};
template <class T> struct is_const_or_const_ref<T const&> : std::true_type{};
template <class T> struct is_const_or_const_ref<T const> : std::true_type{};
#endif
// std::invoke from C++17
@ -170,7 +171,7 @@ template <class T> struct is_ref_to_const<T const&> : std::true_type{};
template <typename Fn, typename... Args,
#ifdef TL_OPTIONAL_LIBCXX_MEM_FN_WORKAROUND
typename = enable_if_t<!(is_pointer_to_non_const_member_func<Fn>::value
&& is_ref_to_const<Args...>::value)>,
&& is_const_or_const_ref<Args...>::value)>,
#endif
typename = enable_if_t<std::is_member_pointer<decay_t<Fn>>{}>,
int = 0>