Index: include/functional =================================================================== --- include/functional +++ include/functional @@ -1006,7 +1006,7 @@ { _Predicate __pred_; public: - _LIBCPP_INLINE_VISIBILITY explicit _LIBCPP_CONSTEXPR_AFTER_CXX11 + _LIBCPP_INLINE_VISIBILITY explicit _LIBCPP_CONSTEXPR_AFTER_CXX11 binary_negate(const _Predicate& __pred) : __pred_(__pred) {} _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY @@ -1793,7 +1793,7 @@ typedef __function::__func<_Fp, _Alloc, _Rp(_ArgTypes...)> _FF; typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap; _Ap __a(__a0); - if (sizeof(_FF) <= sizeof(__buf_) && + if (sizeof(_FF) <= sizeof(__buf_) && is_nothrow_copy_constructible<_Fp>::value && is_nothrow_copy_constructible<_Ap>::value) { __f_ = ::new((void*)&__buf_) _FF(_VSTD::move(__f), _Alloc(__a)); @@ -2254,7 +2254,11 @@ template _LIBCPP_INLINE_VISIBILITY +#ifndef __cpp_decltype_auto typename __bind_return<_Fd, _Td, tuple<_Args&&...> >::type +#else + decltype(auto) +#endif operator()(_Args&& ...__args) { return __apply_functor(__f_, __bound_args_, __indices(), @@ -2263,7 +2267,11 @@ template _LIBCPP_INLINE_VISIBILITY +#ifndef __cpp_decltype_auto typename __bind_return >::type +#else + decltype(auto) +#endif operator()(_Args&& ...__args) const { return __apply_functor(__f_, __bound_args_, __indices(),