c++/3531: namespace lookup for template specialization fails <synopsis of the problem (one line)>

gjlos@rz.uni-mannheim.de gjlos@rz.uni-mannheim.de
Mon Jul 2 09:26:00 GMT 2001

>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
>Originator:     Gert-jan Los
>Release:        3.0
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++
	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'

cat <<-'EOT' >ns_templspec.C
	namespace ns {
		template<bool FLAG> struct foo;
	template<> struct ns::foo<true> { };
g++ ns_templspec.C

	Rewrite the last line as
		namespace ns { template<> struct foo<true> { }; }


More information about the Gcc-bugs mailing list