https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120644
--- Comment #6 from Giuseppe D'Angelo <peppe at gcc dot gnu.org> --- Reduced testcase: enum class E { E0, E1 }; template <typename T> constexpr auto fmt_kind = E::E0; template <typename T> class opt{}; template <typename T> constexpr auto fmt_kind<opt<T>> = E::E1; Executing on host: /home/peppe/projects/src/gcc-build/gcc/testsuite/g++12/../../xg++ -B/home/peppe/projects/src/gcc-build/gcc/testsuite/g++12/../../ /home/peppe/projects/src/gcc.git/gcc/testsuite/g++.dg/modules/pr120644_b.C -fdiagnostics-plain-outpu> spawn -ignore SIGHUP /home/peppe/projects/src/gcc-build/gcc/testsuite/g++12/../../xg++ -B/home/peppe/projects/src/gcc-build/gcc/testsuite/g++12/../../ /home/peppe/projects/src/gcc.git/gcc/testsuite/g++.dg/modules/pr120644_b.C -fdiagnostics-plain-output > In file included from /home/peppe/projects/src/gcc.git/gcc/testsuite/g++.dg/modules/pr120644_a.H:4, of module /home/peppe/projects/src/gcc.git/gcc/testsuite/g++.dg/modules/pr120644_a.H, imported at /home/peppe/projects/src/gcc.git/gcc/testsuite/g++.dg/modules/pr120644_b.C:5: /home/peppe/projects/src/gcc.git/gcc/testsuite/g++.dg/modules/pr120644.h:8:16: error: conflicting type for imported declaration 'template<class T> constexpr const E fmt_kind<opt<T> >' In file included from /home/peppe/projects/src/gcc.git/gcc/testsuite/g++.dg/modules/pr120644_b.C:4: /home/peppe/projects/src/gcc.git/gcc/testsuite/g++.dg/modules/pr120644.h:8:16: note: existing declaration 'template<class T> constexpr const E fmt_kind<opt<T> >' compiler exited with status 1 FAIL: g++.dg/modules/pr120644_b.C -std=c++17 (test for excess errors) Excess errors: /home/peppe/projects/src/gcc.git/gcc/testsuite/g++.dg/modules/pr120644.h:8:16: error: conflicting type for imported declaration 'template<class T> constexpr const E fmt_kind<opt<T> >'