https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118791
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The OpenMP wording here (taken from 6.0 but I think it hasn't changed much over the years) is: "The function variant is determined by base language standard name lookup rules ([basic.lookup]) of variant-name using the argument types at the call site after implementation defined changes have been made according to the OpenMP context." Note, it was a result of your suggestion how to do it (the original proposal was to mark the function the other way, on variant says that it is a variant of some base but with overloaded functions and templates that isn't clear how that would work at all. The "implementation defined changes" are just for simd, so in this testcase it should be really just the argument dependent lookup with the given argument types.