* [Bug c++/52126] [4.7 Regression] compilation error
2012-02-05 19:47 [Bug c++/52126] New: compilation error tmmikolajczyk at gmail dot com
@ 2012-02-05 20:29 ` jakub at gcc dot gnu.org
2012-02-05 20:57 ` tmmikolajczyk at gmail dot com
` (7 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: jakub at gcc dot gnu.org @ 2012-02-05 20:29 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52126
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org,
| |jason at gcc dot gnu.org
Target Milestone|--- |4.7.0
Summary|compilation error |[4.7 Regression]
| |compilation error
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-02-05 20:28:32 UTC ---
Started with http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=182711
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/52126] [4.7 Regression] compilation error
2012-02-05 19:47 [Bug c++/52126] New: compilation error tmmikolajczyk at gmail dot com
2012-02-05 20:29 ` [Bug c++/52126] [4.7 Regression] " jakub at gcc dot gnu.org
@ 2012-02-05 20:57 ` tmmikolajczyk at gmail dot com
2012-02-06 21:32 ` fabien at gcc dot gnu.org
` (6 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: tmmikolajczyk at gmail dot com @ 2012-02-05 20:57 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52126
--- Comment #2 from tmmikolajczyk at gmail dot com 2012-02-05 20:57:29 UTC ---
Further investigation shows that the issue appears only when inheritance from
the template class (class B : private A<T>) is provided explicitly. According
to the standard a nested class defined inside a class template is implicitly
template as well. The modified code reflecting that rule compiles fine:
template<typename T>
class A
{
public:
void foo() {};
class B : private A
{
public:
typedef A inherited;
using inherited::foo;
};
};
Anyway, the first version of the code seems to be valid C++ code.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/52126] [4.7 Regression] compilation error
2012-02-05 19:47 [Bug c++/52126] New: compilation error tmmikolajczyk at gmail dot com
2012-02-05 20:29 ` [Bug c++/52126] [4.7 Regression] " jakub at gcc dot gnu.org
2012-02-05 20:57 ` tmmikolajczyk at gmail dot com
@ 2012-02-06 21:32 ` fabien at gcc dot gnu.org
2012-02-07 15:47 ` rguenth at gcc dot gnu.org
` (5 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: fabien at gcc dot gnu.org @ 2012-02-06 21:32 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52126
--- Comment #3 from fabien at gcc dot gnu.org 2012-02-06 21:31:30 UTC ---
I'll be assigning myself to this bug when I come back from vacation next
monday.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/52126] [4.7 Regression] compilation error
2012-02-05 19:47 [Bug c++/52126] New: compilation error tmmikolajczyk at gmail dot com
` (2 preceding siblings ...)
2012-02-06 21:32 ` fabien at gcc dot gnu.org
@ 2012-02-07 15:47 ` rguenth at gcc dot gnu.org
2012-02-07 17:23 ` redi at gcc dot gnu.org
` (4 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: rguenth at gcc dot gnu.org @ 2012-02-07 15:47 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52126
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |rejects-valid
Priority|P3 |P1
Status|UNCONFIRMED |NEW
Last reconfirmed| |2012-02-07
Known to work| |4.6.3
Ever Confirmed|0 |1
--- Comment #4 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-02-07 15:46:32 UTC ---
Confirmed.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/52126] [4.7 Regression] compilation error
2012-02-05 19:47 [Bug c++/52126] New: compilation error tmmikolajczyk at gmail dot com
` (3 preceding siblings ...)
2012-02-07 15:47 ` rguenth at gcc dot gnu.org
@ 2012-02-07 17:23 ` redi at gcc dot gnu.org
2012-02-12 20:03 ` fabien at gcc dot gnu.org
` (3 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: redi at gcc dot gnu.org @ 2012-02-07 17:23 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52126
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-02-07 17:23:40 UTC ---
(In reply to comment #2)
> Further investigation shows that the issue appears only when inheritance from
> the template class (class B : private A<T>) is provided explicitly. According
> to the standard a nested class defined inside a class template is implicitly
> template as well.
I don't think that's relevant. The point is that the injected-class-name 'A'
and 'A<T>' both refer to the class template, and should work equivalently.
It can be reduced to:
template<typename T>
struct A
{
int foo;
struct B : A<T>
{
using A::foo;
};
};
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/52126] [4.7 Regression] compilation error
2012-02-05 19:47 [Bug c++/52126] New: compilation error tmmikolajczyk at gmail dot com
` (4 preceding siblings ...)
2012-02-07 17:23 ` redi at gcc dot gnu.org
@ 2012-02-12 20:03 ` fabien at gcc dot gnu.org
2012-02-16 10:22 ` fabien at gcc dot gnu.org
` (2 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: fabien at gcc dot gnu.org @ 2012-02-12 20:03 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52126
fabien at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
AssignedTo|unassigned at gcc dot |fabien at gcc dot gnu.org
|gnu.org |
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/52126] [4.7 Regression] compilation error
2012-02-05 19:47 [Bug c++/52126] New: compilation error tmmikolajczyk at gmail dot com
` (5 preceding siblings ...)
2012-02-12 20:03 ` fabien at gcc dot gnu.org
@ 2012-02-16 10:22 ` fabien at gcc dot gnu.org
2012-02-17 7:52 ` fabien at gcc dot gnu.org
2012-02-17 7:53 ` fabien at gcc dot gnu.org
8 siblings, 0 replies; 10+ messages in thread
From: fabien at gcc dot gnu.org @ 2012-02-16 10:22 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52126
--- Comment #6 from fabien at gcc dot gnu.org 2012-02-16 09:57:20 UTC ---
(In reply to comment #5)
> (In reply to comment #2)
> > Further investigation shows that the issue appears only when inheritance from
> > the template class (class B : private A<T>) is provided explicitly. According
> > to the standard a nested class defined inside a class template is implicitly
> > template as well.
>
> I don't think that's relevant. The point is that the injected-class-name 'A'
> and 'A<T>' both refer to the class template, and should work equivalently.
Yes, they should. The first bug is that 'A' does not behave like 'A<T>' -- I
have fixed it. The second bug is that 'A<T>' as a base for a nested class does
not currently work if A is also an enclosing class. I have tested a patch, but
it is not quite ready.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/52126] [4.7 Regression] compilation error
2012-02-05 19:47 [Bug c++/52126] New: compilation error tmmikolajczyk at gmail dot com
` (6 preceding siblings ...)
2012-02-16 10:22 ` fabien at gcc dot gnu.org
@ 2012-02-17 7:52 ` fabien at gcc dot gnu.org
2012-02-17 7:53 ` fabien at gcc dot gnu.org
8 siblings, 0 replies; 10+ messages in thread
From: fabien at gcc dot gnu.org @ 2012-02-17 7:52 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52126
--- Comment #7 from fabien at gcc dot gnu.org 2012-02-17 07:49:43 UTC ---
Author: fabien
Date: Fri Feb 17 07:49:35 2012
New Revision: 184328
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=184328
Log:
gcc/testsuite/ChangeLog
2012-02-16 Fabien Chene <fabien@gcc.gnu.org>
PR c++/52126
* g++.dg/template/using21.C: New.
* g++.dg/template/using22.C: Likewise.
gcc/cp/ChangeLog
2012-02-16 Fabien Chene <fabien@gcc.gnu.org>
PR c++/52126
* decl.c (xref_basetypes): call dependent_scope_p instead of
dependent_type_p.
Added:
trunk/gcc/testsuite/g++.dg/template/using21.C
trunk/gcc/testsuite/g++.dg/template/using22.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/decl.c
trunk/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/52126] [4.7 Regression] compilation error
2012-02-05 19:47 [Bug c++/52126] New: compilation error tmmikolajczyk at gmail dot com
` (7 preceding siblings ...)
2012-02-17 7:52 ` fabien at gcc dot gnu.org
@ 2012-02-17 7:53 ` fabien at gcc dot gnu.org
8 siblings, 0 replies; 10+ messages in thread
From: fabien at gcc dot gnu.org @ 2012-02-17 7:53 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52126
fabien at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
--- Comment #8 from fabien at gcc dot gnu.org 2012-02-17 07:51:44 UTC ---
Fixed in 4.7.
^ permalink raw reply [flat|nested] 10+ messages in thread