On Monday, 6 May 2013 at 15:15:47 UTC, Steven Schveighoffer wrote:
On Sat, 04 May 2013 14:11:02 -0400, jerro <[email protected]> wrote:
Is there a way to avoid default initializing a struct field in
D? The following doesn't seem to work:
struct Foo
{
int[42] buffer = void;
int bar;
}
I know I can do this:
Foo foo = void
But then all fields are uninitialized.
Foo.init must exist, and be filled with *something*. Is it
useful to FORCE buffer to not have 0 values? Or is it that you
don't care what it has? In the latter, is it terrible that
it's 0?
I don't care what it contains, I just want to avoid
initialization for performance reasons. I have something like
this:
struct Foo(size_t maxNItems)
{
Item[maxNItems] buffer;
size_t nItems;
size_t addItem(...){ ... }
void processItems(...){...}
}
The user of Foo can add up to maxNItems items and then run some
algorithm on them. Now say that Foo needs to support up to, say,
a thousand items, but in most cases just a few of them will be
added. In this case default initialization can take way more time
than the actual algorithm.