It's never called.I added a call to abort() to that function, and the tests all pass. So the function is never used, so GCC never compiles it and doesn't notice that the return type is invalid. That's allowed by the standard. The compiler is not required to diagnose ill-formed code in uninstantiated templates.
As I mentioned in the original message, it is called several times. Both MSVC and Clang pick up the error, but GCC does not. It's a bug.