https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84689
Bug ID: 84689 Summary: is_invocable is true even for call operator via ambiguous base Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: barry.revzin at gmail dot com Target Milestone: --- This static assert fires on gcc, it does not on clang: #include <functional> struct base { void operator()(int ) { } }; struct a : base { }; struct b : base { }; struct f: a, b { using a::operator(); using b::operator(); }; int main() { static_assert(!std::is_invocable_v<f, int>); } Even though gcc reports f as being invocable with int, attempts to actually invoke it fail: int main() { f{}(4); // error: 'base' is an ambiguous base of 'f' }