December 02, 2019 [Issue 20424] New: A constructor with a value argument of the same type as being constructed should be an error | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=20424 Issue ID: 20424 Summary: A constructor with a value argument of the same type as being constructed should be an error Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody@puremagic.com Reporter: bugzilla@digitalmars.com extern(C) void puts(const char*); struct S { this(S) // should be a compile time error { puts("works fine"); } } void main() { S a; S b = S(a); } It should call itself recursively and crash. The fact that it appears to run successfully is also a bug. Copy constructors must take their first argument by reference. https://github.com/dlang/DIPs/blob/master/DIPs/accepted/DIP1018.md -- |
Copyright © 1999-2021 by the D Language Foundation