This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

GCC 2.95.2, Next 3.3; explicit specialization loses default


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]