Bug 15260

Summary: base class typedef referred through 'using' declaration still unusable without qualification
Product: gcc Reporter: jbeulich
Component: c++Assignee: Not yet assigned to anyone <unassigned>
Severity: normal CC: gcc-bugs, gcc, igodard, jbeulich, jwakely.gcc, pinskia, reichelt, rleigh, smelkov
Priority: P2 Keywords: rejects-valid
Version: 3.4.0   
Target Milestone: ---   
Host: Target:
Build: Known to work:
Known to fail: 2.95.3 3.3.3 3.4.0 4.0.0 3.0.4 3.2.3 Last reconfirmed: 2006-03-05 03:16:54
Bug Depends on:    
Bug Blocks: 12944    

Description jbeulich 2004-05-03 10:24:29 UTC
template<typename T> class n;

template<typename T> class b {
	typedef n<T> n_t;

template<typename T> class d : private b<T> {
	using typename b<T>::n_t;
	typename n_t*test1();
	typename b<T>::n_t*test2();

void test() {
	d<int> di;

results in errors on the unqualified uses of n_t in class d. I cannot see
anything invalid with these constructs, nor can Intel's or a couple of other
compilers I tried this with.
Comment 1 Andrew Pinski 2004-05-03 11:20:53 UTC
Confirmed, before 3.4.0, the using statement was rejected also.
Comment 2 Jonathan Wakely 2005-08-31 21:04:49 UTC
Is this a dup of Bug 14258 ?
Comment 3 Andrew Pinski 2007-05-06 23:31:23 UTC
Yes it is a dup.

*** This bug has been marked as a duplicate of 14258 ***