[Bug libstdc++/80564] bind on SFINAE unfriendly generic lambda
rs2740 at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu May 4 20:11:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80564
TC <rs2740 at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rs2740 at gmail dot com
--- Comment #4 from TC <rs2740 at gmail dot com> ---
(In reply to Eric Fiselier from comment #3)
> Here is an example of why `_Bind::operator()(...) const` must be considered
> during overload resolution even if the call wrapper itself is not const.
>
> ------------------------------
> #include <functional>
>
> struct Func {
> template <class ...Args>
> void operator()(Args&&...) = delete;
>
> template <class ...Args>
> void operator()(Args&&...) const {}
> };
>
> int main() {
> Func f;
> std::bind(f)();
> }
> -------------------------
Interesting, libstdc++ rejects this as an attempt to call a deleted function.
That seems more correct than libc++'s approach which calls the const overload.
More information about the Gcc-bugs
mailing list