https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118791
--- Comment #13 from Jason Merrill <jason at gcc dot gnu.org> --- (In reply to Tobias Burnus from comment #11) > clang++ (since 11.0 and up to main) accepts the attached testcase clang++ also accepts the testcase with static_assert(false) added to the variants, it doesn't seem to be instantiating them. (In reply to Jakub Jelinek from comment #12) > My understanding is that the intent is for the variant function to have > (except for the simd special case which according to the ABI can tweak > stuff) always the same argument types as the base function Yes, both functions have type void(int&&), and omp_declare_variant_finalize_one checks that. The difference is in the template argument (explicitly specified or deduced), not the function type.