This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
c++/3531: namespace lookup for template specialization fails <synopsis of the problem (one line)>
- To: gcc-gnats at gcc dot gnu dot org
- Subject: c++/3531: namespace lookup for template specialization fails <synopsis of the problem (one line)>
- From: gjlos at rz dot uni-mannheim dot de
- Date: Mon, 2 Jul 2001 18:23:39 +0200 (MET DST)
- Reply-To: gjlos at rz dot uni-mannheim dot de
>Number: 3531
>Category: c++
>Synopsis: namespace lookup for template specialization fails
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: rejects-legal
>Submitter-Id: net
>Arrival-Date: Mon Jul 02 09:26:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: Gert-jan Los
>Release: 3.0
>Organization:
>Environment:
System: SunOS memorum 5.7 Generic_106541-08 sun4u sparc SUNW,Ultra-1
Architecture: sun4
host: sparc-sun-solaris2.7
build: sparc-sun-solaris2.7
target: sparc-sun-solaris2.7
configured with: ../gcc-3.0/configure --with-ld=/usr/ccs/bin/ld --with-as=/usr/ccs/bin/as --disable-nls --disable-threads --enable-languages=c,c++
>Description:
Given the code below. g++ rejects the specialization of ns::foo<true>
despite the explicit namespace qualification.
The Message reads:
ns_templspec.C:5: specializing `struct ns::foo<true>' in
different namespace
ns_templspec.C:2: from definition of `template<bool FLAG>
struct ns::foo'
>How-To-Repeat:
cat <<-'EOT' >ns_templspec.C
namespace ns {
template<bool FLAG> struct foo;
}
template<> struct ns::foo<true> { };
EOT
g++ ns_templspec.C
>Fix:
Rewrite the last line as
namespace ns { template<> struct foo<true> { }; }
>Release-Note:
>Audit-Trail:
>Unformatted: