https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85965
Hedayat Vatankhah <hedayat.fwd at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |hedayat.fwd at gmail dot com --- Comment #2 from Hedayat Vatankhah <hedayat.fwd at gmail dot com> --- IMHO, it is very unfortunate that we need to provide the full definition for this to work. It has forced me to include a header file just for this error to go away, which is not desirable. I guess it doesn't compile a completely valid C++ code (at least, I've not found that this is a std::set requirement). 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. So, if the code using an incomplete type pointer for std::set is a valid C++ code, this is a sever (non-standard conforming) bug in library.