summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libcxx/include/functional3
-rw-r--r--libcxx/include/type_traits28
2 files changed, 16 insertions, 15 deletions
diff --git a/libcxx/include/functional b/libcxx/include/functional
index 495ca7ceee9..8c166b73d64 100644
--- a/libcxx/include/functional
+++ b/libcxx/include/functional
@@ -1113,7 +1113,8 @@ class _LIBCPP_VISIBLE function<_Rp(_ArgTypes...)>
_LIBCPP_INLINE_VISIBILITY
static bool __not_null(const function<_Rp(_Ap...)>& __p) {return __p;}
- template <class _Fp, bool = __invokable<_Fp&, _ArgTypes...>::value>
+ template <class _Fp, bool = !is_same<_Fp, function>::value &&
+ __invokable<_Fp&, _ArgTypes...>::value>
struct __callable;
template <class _Fp>
struct __callable<_Fp, true>
diff --git a/libcxx/include/type_traits b/libcxx/include/type_traits
index bc3c1c20c5e..25295d5f3f5 100644
--- a/libcxx/include/type_traits
+++ b/libcxx/include/type_traits
@@ -2717,37 +2717,37 @@ struct __check_complete<_Tp&&>
template <class _Rp, class ..._Param>
struct __check_complete<_Rp (*)(_Param...)>
- : private __check_complete<_Param...>
+ : private __check_complete<_Rp>
{
};
template <class _Rp, class ..._Param>
struct __check_complete<_Rp (_Param...)>
- : private __check_complete<_Param...>
+ : private __check_complete<_Rp>
{
};
template <class _Rp, class _Class, class ..._Param>
struct __check_complete<_Rp (_Class::*)(_Param...)>
- : private __check_complete<_Class, _Param...>
+ : private __check_complete<_Class>
{
};
template <class _Rp, class _Class, class ..._Param>
struct __check_complete<_Rp (_Class::*)(_Param...) const>
- : private __check_complete<_Class, _Param...>
+ : private __check_complete<_Class>
{
};
template <class _Rp, class _Class, class ..._Param>
struct __check_complete<_Rp (_Class::*)(_Param...) volatile>
- : private __check_complete<_Class, _Param...>
+ : private __check_complete<_Class>
{
};
template <class _Rp, class _Class, class ..._Param>
struct __check_complete<_Rp (_Class::*)(_Param...) const volatile>
- : private __check_complete<_Class, _Param...>
+ : private __check_complete<_Class>
{
};
@@ -2755,49 +2755,49 @@ struct __check_complete<_Rp (_Class::*)(_Param...) const volatile>
template <class _Rp, class _Class, class ..._Param>
struct __check_complete<_Rp (_Class::*)(_Param...) &>
- : private __check_complete<_Class, _Param...>
+ : private __check_complete<_Class>
{
};
template <class _Rp, class _Class, class ..._Param>
struct __check_complete<_Rp (_Class::*)(_Param...) const&>
- : private __check_complete<_Class, _Param...>
+ : private __check_complete<_Class>
{
};
template <class _Rp, class _Class, class ..._Param>
struct __check_complete<_Rp (_Class::*)(_Param...) volatile&>
- : private __check_complete<_Class, _Param...>
+ : private __check_complete<_Class>
{
};
template <class _Rp, class _Class, class ..._Param>
struct __check_complete<_Rp (_Class::*)(_Param...) const volatile&>
- : private __check_complete<_Class, _Param...>
+ : private __check_complete<_Class>
{
};
template <class _Rp, class _Class, class ..._Param>
struct __check_complete<_Rp (_Class::*)(_Param...) &&>
- : private __check_complete<_Class, _Param...>
+ : private __check_complete<_Class>
{
};
template <class _Rp, class _Class, class ..._Param>
struct __check_complete<_Rp (_Class::*)(_Param...) const&&>
- : private __check_complete<_Class, _Param...>
+ : private __check_complete<_Class>
{
};
template <class _Rp, class _Class, class ..._Param>
struct __check_complete<_Rp (_Class::*)(_Param...) volatile&&>
- : private __check_complete<_Class, _Param...>
+ : private __check_complete<_Class>
{
};
template <class _Rp, class _Class, class ..._Param>
struct __check_complete<_Rp (_Class::*)(_Param...) const volatile&&>
- : private __check_complete<_Class, _Param...>
+ : private __check_complete<_Class>
{
};
OpenPOWER on IntegriCloud