https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69005
--- Comment #7 from Jonathan Wakely ---
Author: redi
Date: Tue Jan 12 14:54:33 2016
New Revision: 232273
URL: https://gcc.gnu.org/viewcvs?rev=232273=gcc=rev
Log:
Prevent recursive instantiation in std::function
PR libstdc++/69005
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69005
--- Comment #8 from Jonathan Wakely ---
Author: redi
Date: Tue Jan 12 14:55:00 2016
New Revision: 232274
URL: https://gcc.gnu.org/viewcvs?rev=232274=gcc=rev
Log:
Prevent recursive instantiation in std::function
PR libstdc++/69005
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69005
Jason Merrill changed:
What|Removed |Added
Status|NEW |RESOLVED
Resolution|---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69005
--- Comment #5 from Jason Merrill ---
Author: jason
Date: Fri Dec 25 03:24:51 2015
New Revision: 231952
URL: https://gcc.gnu.org/viewcvs?rev=231952=gcc=rev
Log:
PR c++/69005
* call.c (add_template_candidate_real): Don't try to
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69005
--- Comment #3 from Jonathan Wakely ---
Hmm, __and_ is supposed to shortcut, but the way I use it here doesn't take
advantage of that because _Invoke is always instantiated even when _NotSelf is
false.
Replacing is_same<_Invoke<...>, ...> with
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69005
--- Comment #4 from Jonathan Wakely ---
I'll try your suggestion first though.
In the real code we also use _Callable in the templated assignment operator,
where the argument can be deduced as the class type, but that can be done
differently
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69005
--- Comment #2 from Jason Merrill ---
If we remove the copy constructor declaration or make it defaulted, clang
rejects this testcase, also due to excessive recursive instantiation, and GCC
starts accepting it. We're definitely into corner
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69005
Jakub Jelinek changed:
What|Removed |Added
Status|UNCONFIRMED |NEW
Last reconfirmed|