[Bug c++/56358] New: [C++11] Erroneous interaction of typedef and inherited constructor declarations
daniel.kruegler at googlemail dot com
gcc-bugzilla@gcc.gnu.org
Sat Feb 16 21:11:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56358
Bug #: 56358
Summary: [C++11] Erroneous interaction of typedef and inherited
constructor declarations
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: daniel.kruegler@googlemail.com
The following code - compiled with the flags
-pedantic-errors -std=c++11 -Wall
is rejected by gcc 4.8.0 20130210 (experimental):
//----------------------------------
template<class T>
struct A {};
template<class T>
struct B1 : A<T> {
typedef A<T> super_t;
using A<T>::A; // #7
};
template<class T>
struct B2 : A<T> {
using A<T>::A;
typedef A<T> super_t; // #13
};
//----------------------------------
"7|error: declaration of 'using A<T>::A' [-fpermissive]|
2|error: changes meaning of 'A' from 'struct A<T>' [-fpermissive]|
13|error: 'A' does not name a type|
13|note: (perhaps 'typename A<T>::A' was intended)"
It could be related to bug 56323, but I have currently no way to verify this
hypotheses.
My understanding is that both definitions of B1 and B2 should be valid. Note
that even though the typedefs referring to A<T> are needed to produce the
error, even though at least in B1 its effects are completely unexpected.
More information about the Gcc-bugs
mailing list