Hello. Please see the following code:

import std.stdio ;
struct Pair {
        int x, y ;
        this (int x, int y) { x = x ; y = y ; }
}
void main() {
        auto P = Pair(1, 2) ;
        writeln(P.x, ' ', P.y) ;
}

This outputs 0 0, whereas the equivalent C++ code outputs 1 2 correctly:

# include <iostream>
struct Pair {
        int x, y ;
        Pair(int x, int y) : x(x), y(y) {}
} ;
int main() {
        auto P = Pair(1, 2) ;
        std::cout << P.x << ' ' << P.y << std::endl ;
}

It seems to me that D should either not permit argument names to
shadow the member names, since it has no initializer lists and all
members are automatically initialized. Comments?

-- 
Shriramana Sharma ஶ்ரீரமணஶர்மா श्रीरमणशर्मा

Reply via email to