Hopefully this isn't standard defined behavior, because it doesn't make much
sense.

// trying to have some overloaded functions to share some private data:

class A {
private:
    // some static stuff
    // ...

public:
    A(int a, int b = 0) {}
    // more versions of A(...)
    // ...
};

int main() {
    int a = 0;

    A(a, 0); // works
    A(a); // error: attempting to redeclare a
    (A(a)); // this works
}


-- 
           Summary: constructor call with a single variable as the argument
                    is interpreted as a variable declaration if it's a full
                    expression.
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jsdeckerido at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45139

Reply via email to