https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68138
Alexander Haase <unsavoryemail at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |unsavoryemail at gmail dot com --- Comment #2 from Alexander Haase <unsavoryemail at gmail dot com> --- Can confirm that this is still an issue up to the latest release of GCC 8. Here's an even simpler reproduction: #include <tuple> struct Empty { bool operator == (const Empty &) const { return true; } }; int main() { std::tuple<Empty, Empty> a, b; return a == b; } Here's a compiler explorer example where clang and msvc compile the above with no issue, but gcc does not. Note that clang and gcc use the same stl implementation as configured for compiler explorer. https://godbolt.org/z/Em6B9e