Constrain __bind functor constructor such that it won't accidentally get used as a copy constructor from a non-const lvalue.  Fixes <rdar://problem/11359080>.

llvm-svn: 156182
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: df7aad41fd347e82dbab24fdc7c2fbaa6ca767fb
diff --git a/include/functional b/include/functional
index 884a577..495ca7c 100644
--- a/include/functional
+++ b/include/functional
@@ -1707,7 +1707,11 @@
 
 #endif  // _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
 
-    template <class _Gp, class ..._BA>
+    template <class _Gp, class ..._BA,
+              class = typename enable_if
+                               <
+                                  is_constructible<_Fd, _Gp>::value
+                               >::type>
       _LIBCPP_INLINE_VISIBILITY
       explicit __bind(_Gp&& __f, _BA&& ...__bound_args)
         : __f_(_VSTD::forward<_Gp>(__f)),