Failing to construct when first parameter is a default object

veksler@il.ibm.com veksler@il.ibm.com
Thu Apr 15 11:37:00 GMT 1999


======= Error =========
t.cpp: In function `void example()':
t.cpp:22: type specifier omitted for parameter
t.cpp:22: parse error before `5'
======= Version+System+Parameters ========
gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)
on:            AIX-4.1.5.0
options:  /opt/bin/g++ -c t.cpp

Also:

gcc version egcs-2.90.23 980102 (egcs-1.0.1 release)
on:  i686-pc-linux-gnulibc1 (RedHat 4.2, Linux-2.0.30).
options: /opt/bin/g++ -c t.cpp

========== t.cpp ===========
class Modifier {};

class Foo {
public:
    Foo(Modifier, int x) {}
};

class Bar {
public:
    Bar(int x, Modifier) {}
};

void example()
{
    Modifier modifier;
    Bar bar(5,Modifier());      // works
    Foo foo(modifier, 5);       // works
    Foo foo2=Foo(Modifier(), 5); // works
    Foo fubar(Modifier(), 5);   // fails
}
============================ t.ii ===============
# 1 "t.cpp"
class Modifier {};

class Foo {
public:
    Foo(Modifier, int x) {}
};

class Bar {
public:
    Bar(int x, Modifier) {}
};

void example()
{
    Modifier modifier;
    Bar bar(5,Modifier());
    Foo foo(modifier, 5);
    Foo foo2=Foo(Modifier(), 5);
    Foo fubar(Modifier(), 5);
}




More information about the Gcc-bugs mailing list