https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117803
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- That testcase looks invalid to me. Try calling repl1() directly, it will fail the same way, one can only call it with explicit template parameters, so repl1<int>(); or repl1<T>(); etc. But variant-name is an identifier, so declare variant(repl1<T>) is not valid, and OpenMP just says that the base function is picked up by doing base language lookup of that variant-name with the arguments of the function. So, if the arguments don't cause deduction of all template parameters, it can't be valid.