/home/manuel/src/test/gcc/testsuite/g++.dg/template/recurse3.C: In instantiation of ‘const int Y<1000>::value’: /home/manuel/src/test/gcc/testsuite/g++.dg/template/recurse3.C:17:17: instantiated from here /home/manuel/src/test/gcc/testsuite/g++.dg/template/recurse3.C:13:46: error: ‘<expression error>’ is not a valid template argument for type ‘int’ because it is a non-constant expression
Testcase is related to PR9335. // PR c++/9335 // We should not see an error about non-constant initialization. // { dg-do compile } // { dg-options "-ftemplate-depth-15" } template<int N> struct Y; template <int N> struct X { static const int value = X<Y<N-1>::value>::value; // { dg-message "skipping \d instantiation contexts" "" { target *-*-* } 0 } // { dg-bogus "expression error" "" { xfail *-*-* } 0 } }; template <int N> struct Y { static const int value = Y<X<N-1>::value>::value; // { dg-error "incomplete type" } }; template struct Y<1000>; -- Summary: error: ‘<expression error>’ is not a valid template argument for type ‘int’ because it is a non-constant expression Product: gcc Version: unknown Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: manu at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43913