https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93147
--- Comment #6 from Alexander Kondratskiy <kholdstare0.0 at gmail dot com> --- Interesting. Some thoughts I had - - If this is the correct behavior given the C++ standard, then that means the tuple implementation in the library has to be fixed. - If this is incorrect behavior, then something in the frontend needs to be fixed regarding member function lookup. What's strange here is that if one of the structs isn't empty, the problem goes away - it's more subtle than "the compiler sees the equality operators". Could the empty-base optimization play a role? Common initial sequence?