[Bug c++/80890] New: Qualified class member access in a member initialization
sergi.mateo at bsc dot es
gcc-bugzilla@gcc.gnu.org
Fri May 26 14:58:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80890
Bug ID: 80890
Summary: Qualified class member access in a member
initialization
Product: gcc
Version: 5.4.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: sergi.mateo at bsc dot es
Target Milestone: ---
The following C++11 code doesn't compile with g++ 5.4.1, although it compiles
fine with g++ 6:
template < typename _K, typename _V >
class A
{
int x;
int *px = &x; // OK
int *qx = &this->x; // OK
int *rx = &(*this).x; // OK
int *sx = &((*this).::A<_K, _V>::x); // OK
int *tx = &(*this).::A<_K, _V>::x; // KO
};
The error message is the following one:
g++ -c t1.cc -std=c++11
t1.cc:9:36: error: expected ‘;’ at end of member declaration
int *tx = &(*this).::A<_K, _V>::x; // KO
^
t1.cc:9:36: error: declaration of ‘int A<_K, _V>::_V’
t1.cc:1:25: error: shadows template parm ‘class _V’
template < typename _K, typename _V >
^
t1.cc:9:38: error: expected unqualified-id before ‘>’ token
int *tx = &(*this).::A<_K, _V>::x; // KO
^
t1.cc:9:32: error: wrong number of template arguments (1, should be 2)
int *tx = &(*this).::A<_K, _V>::x; // KO
^
t1.cc:2:8: note: provided for ‘template<class _K, class _V> class A’
class A
Best regards,
Sergi
More information about the Gcc-bugs
mailing list