[PATCH] D10997: [libcxx] LWG2420 bits for bind<void>

Agustín Bergé kaballo86 at hotmail.com
Tue Jul 7 15:48:25 PDT 2015


In http://reviews.llvm.org/D10997#200672, @EricWF wrote:

> I don't think we need any changes in `__functional_03` because we don't provide bind in 03 :)


The changes in `__functional_03` apply to commented out code. I added those just for the sake of completeness, although I doubt there will ever be an '03 `bind`. There'd be no harm in dropping them.


================
Comment at: include/functional:2188
@@ -2187,2 +2187,3 @@
         <
             is_convertible<typename __bind_return<_Fd, _Td, tuple<_Args&&...> >::type,
+                           result_type>::value || is_void<_Rp>::value,
----------------
EricWF wrote:
> We could probably save a bunch of SFINAE here by using `__lazy_or` and putting the `is_void` check first. However I'm not sure that could hide errors caused by not evaluating `__bind_return`. Thoughts?
IIUC, `__bind_return` is SFINAE-ing out on a resulting ill-formed INVOKE expression. Strictly speaking I don't think it is required, but since it's already there I'd rather be consistent.


http://reviews.llvm.org/D10997







More information about the cfe-commits mailing list