https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120682
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Declare mapper support has been added to GCC for C++ only in GCC 16, with r16-983-g48973e8783e59462ab6e34d5d48b74a2146a05f1 And your testcase is invalid and correctly rejected by trunk: pr120682.C:8:34: error: âTâ was not declared in this scope 8 | #pragma omp declare mapper(myvec<T> v) map(v, v.data[0:v.len]) | ^ pr120682.C:8:35: error: template argument 1 is invalid 8 | #pragma omp declare mapper(myvec<T> v) map(v, v.data[0:v.len]) | ^