Syntax for struct constructors
Ali Çehreli
acehreli at yahoo.com
Sun Feb 7 22:29:59 PST 2010
Steve Teale wrote:
> The D2 structs and unions documentation tells how to define a struct
> constructor (that's a mouthful). But it doesn't tell how to use it.
Seems
> like if you have say
>
> struct Bar
> {
> int[] a;
> this(uint sz) { a.length = sz; }
> }
>
> you can do either:
>
> Bar bar = Bar(256);
>
> or:
>
> Bar bar;
> bar = bar(256);
You probably meant Bar(256) on the right hand side? Then it's a struct
literal.
In any case, even if the produced codes are the same; *I think* the
latter is actually technically default construction, followed by
assignment. Which may involve different operations, depending on the
struct...
> but it would be nicer if you could just do:
>
> Bar bar(256);
I miss that from C++ too. I assumed that there must be reasons related
to D's syntax for not allowing that.
I've settled to this syntax myself, which is effectively the same as
your first above:
auto bar = Bar(256);
>
> In any case, it should be documented.
Ali
More information about the Digitalmars-d
mailing list