This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/22354] New: g++ accepts specializiation without declaration
- From: "tneumann at pi3 dot informatik dot uni-mannheim dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 7 Jul 2005 19:09:03 -0000
- Subject: [Bug c++/22354] New: g++ accepts specializiation without declaration
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
According to the C++ standard each member specialization has to be declared
before use. G++ accepts usage without prior declaration, see the thread starting
at http://gcc.gnu.org/ml/gcc-help/2005-07/msg00074.html for a discussion.
The code shown below is accepted by g++ 4.0 (and 3.3 and 3.4), however it should
report an error as Comeau and icc does. It should require the declarations which
are commented out.
struct A {
const A* a;
};
template <const char* c> struct B {
static const A b;
};
extern const char c[1]="";
extern const char d[1]="";
// Should be required, g++ does not need them
//template<> const A B<d>::b;
//template<> const A B<c>::b;
template<> const A B<c>::b ={&B<d>::b};
template<> const A B<d>::b ={&B<c>::b};
--
Summary: g++ accepts specializiation without declaration
Product: gcc
Version: 4.0.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tneumann at pi3 dot informatik dot uni-mannheim dot de
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22354