This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
GCC 2.95.2, Next 3.3; explicit specialization loses default
- To: gcc-bugs at gcc dot gnu dot org
- Subject: GCC 2.95.2, Next 3.3; explicit specialization loses default
- From: James McKelvey <mckelvey at fafnir dot com>
- Date: Tue, 11 Jan 2000 20:43:56 -0800
- Reply-To: mckelvey at fafnir dot com
GCC 2.95.2
Next Cube running NextSTEP 4.2, 3.3 Developer
Explicit specialization seems to forget that second argument to constructor
has a default value.
Test case:
class A
{
public:
template <class T>
A(T x, bool y = false);
};
template <class T> A::
A(T, bool)
{
}
template <> A::
A(char, bool)
{
}
int main(void)
{
int b;
char c;
A x(b); // OK
A y(c); // Fails
A z(c, false); // OK
return 0;
}
g++ -DNO_NAMESPACE -D__USE_GNU -DNeXT -g -pipe -ansi -pedantic
-pedantic-errors -fsjlj-exceptions -fno-keep-static-consts -fshort-enums
-fstrict-aliasing -ffloat-store -fno-common -ffor-scope -Wsign-promo
-ftemplate-depth-30 -fverbose-asm -fimplicit-templates
-fno-external-templates -fno-repo -Wall -W -Wbad-function-cast
-Wpointer-arith -Wcast-qual -Wconversion -Wstrict-prototypes
-Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wwrite-strings
-Winline -Wtraditional -Wno-long-long -o x x.cc
x.cc: In function `int main()':
x.cc:31: no matching function for call to `A::A (char &)'
x.cc:21: candidates are: A::A<char>(char, bool)
x.cc:8: A::A(const A &)
x.cc:32: warning: unused variable `class A z'
x.cc:31: warning: unused variable `class A y'
x.cc:30: warning: unused variable `class A x'
gmake: *** [x] Error 1
---
Where diesel guitars from faraway bars, blast out the
best songs from our holy wars. Coyote carnival catches
on fire, all the cops in the world pick us up on radar.
Jim McKelvey mckelvey@fafnir.com