ctfe and static arrays

anonymous via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun May 24 11:14:18 PDT 2015


On Sunday, 24 May 2015 at 17:35:39 UTC, Jay Norwood wrote:
> I'm a bit confused by the documentation of the ctfe limitations 
> wrt static arrays due to these seemingly conflicting 
> statements, and the examples didn't seem to clear anything up.  
> I was wondering if anyone has examples of clever things that 
> might be done with static arrays and pointers using ctfe.
>
> 2.Executed expressions may not reference any global or local 
> static variables.
>
> C-style semantics on pointer arithmetic are strictly enforced. 
> Pointer arithmetic is permitted only on pointers which point to 
> static or dynamic array elements.

"Static array" has a special meaning. It does not mean "static 
variable with an array type". Static arrays are those of the form 
Type[size]. That is, the size is known statically.

Examples:

1) static int[5] x; -- x is a static variable with a static array 
type
2) static int[] x; -- static variable, dynamic array
3) int[5] x; -- non-static variable, static array
4) int[] x; -- non-static variable, dynamic array

So, CTFE can't handle examples 1 and 2, because they're static 
variables. 3 and 4 are fine.


More information about the Digitalmars-d-learn mailing list