The new construct allocates memory. You can "new" anything that
requires a set amount of memory.
This is equivalent to what you want:
auto s = new char[0];
Which creates a new dynamic array with no length (yet.) You can resize
it later. Remember, that is not the same as saying:
char[0] s;
Which creates a static array. This cannot be resized.
For the sake of people used to other languages (where arrays are
objects), it is possible "new type_t[]" could be considered the same as
"new type_t[0]", but that is an RFE not a bug.
-[Unknown]
Steve Teale wrote:
void str()
{
auto s = new char[];
}
void main()
{
str();
}
produces:
str.d(3): Error: new can only create structs, dynamic arrays or class objects,
not char[]'s.
What am I missing here, isn't char[] a dynamic array?