[Issue 15694] New: Initializing static array member of a type that has @disabled default constructor
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Wed Feb 17 00:49:48 PST 2016
https://issues.dlang.org/show_bug.cgi?id=15694
Issue ID: 15694
Summary: Initializing static array member of a type that has
@disabled default constructor
Product: D
Version: D2
Hardware: x86_64
OS: Linux
Status: NEW
Severity: normal
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: acehreli at yahoo.com
Related newsgroup thread:
http://forum.dlang.org/thread/bgmzajszxajcuoqtkahq@forum.dlang.org?page=1
The following constructor fails compilation in a way that suggests some error
in the order members are initialized.
import std.stdio;
struct Foo {
int i;
/* This line is pertinent: */
@disable this();
this(int i) {
this.i = i;
}
}
struct FooList {
Foo[3] foos;
this(int) {
/* This constructor fails compilation with dmd 2.070.0:
*
* Error: field 'foos' initialization is not allowed in loops or
* after labels
*
* There are at least two interesting ways of passing compilation:
*
* a) Either add the following line BEFORE the loop:
* foos[0] = Foo(10);
*
* b) Or remove 'ref' in the loop AND add the following line AFTER
* the loop:
* foos[0] = Foo(10);
*/
foreach (ref f; foos[]) {
writeln(f.i);
}
}
}
void main() {
}
Ali
--
More information about the Digitalmars-d-bugs
mailing list