isPureData

isn't array and has no unshared aliasings

template isPureData (
T
) {
enum isPureData;
}

Examples

1 static assert(  isPureData!int );
2 static assert(  isPureData!float );
3 static assert(  isPureData!creal );
4 
5 static struct Vec { float x,y,z; }
6 static assert(  isPureData!Vec );
7 
8 static struct Arr { int[3] data; }
9 static assert(  isPureData!Arr );
10 
11 static struct Some { float f; Vec v; Arr a; }
12 static assert(  isPureData!Some );
13 
14 static assert( !isPureData!string );
15 
16 static struct Bad { int[] data; }
17 static assert( !isPureData!Bad );

Meta