https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85965
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Known to work| |7.3.0 Keywords|diagnostic |rejects-valid Last reconfirmed| |2019-03-19 Component|c++ |libstdc++ Assignee|unassigned at gcc dot gnu.org |redi at gcc dot gnu.org Ever confirmed|0 |1 Summary|G++ gives cryptic error |[8/9 Regression] G++ gives |instead of incomplete type |cryptic error instead of | |incomplete type Target Milestone|--- |8.4 Known to fail| |8.3.0, 9.0 --- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Hedayat Vatankhah from comment #2) > Probably, __is_invocable<> should not signal an error if it finds an > incomplete type, or it should be replaced with a construct that doesn't. It's not possible for a type trait to give a different answer depending whether a type is complete or not. That would violate the One-Definition Rule. I'd forgotten about this issue because the component wasn't libstdc++. I will remove the is_invocable checks.