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> >'

Reply via email to