This is likely related to Bug 51312 and/or Bug 51305, but let me report it just to be sure: template<int> struct X{}; struct Base { enum { a=1 }; }; struct Der : Base { using Base::a; typedef X<(int)a> Y; }; $ g++ u.cc -c u.cc:7:26: error: 'using Base::a' cannot appear in a constant-expression u.cc:7:27: error: template argument 1 is invalid $ g++ -std=c++0x u.cc -c u.cc:7:26: error: invalid cast from type 'Base' to type 'int' u.cc:7:27: error: template argument 1 is invalid
Confirmed.
(In reply to comment #0) > This is likely related to Bug 51312 and/or Bug 51305 Most likely Bug 51382 ;-) *** This bug has been marked as a duplicate of bug 51382 ***
Author: fabien Date: Mon Dec 5 22:04:40 2011 New Revision: 182029 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=182029 Log: gcc/testsuite/ChangeLog 2011-12-05 Fabien Chene <fabien@gcc.gnu.org> PR c++/51319 * g++.dg/lookup/using50.C: New. * g++.dg/lookup/using51.C: New. gcc/cp/ChangeLog 2011-12-05 Fabien Chene <fabien@gcc.gnu.org> PR c++/51319 * semantics.c (finish_id_expression): Strip using declarations early in the function. Added: trunk/gcc/testsuite/g++.dg/lookup/using50.C trunk/gcc/testsuite/g++.dg/lookup/using51.C Modified: trunk/gcc/cp/semantics.c trunk/gcc/testsuite/ChangeLog