struct Foo { float x; } bar;

void preincrement_matrix()  { float4x4 x = float4x4(1); ++x; }
void predecrement_vector()  { float3 x = float3(1); --x; }
void postincrement_matrix() { float4x4 x = float4x4(1); x++; }
void postdecrement_vector() { float3 x = float3(1); x--; }
void not_integer()          { int x = !12; }
void positive_struct()      { Foo x = +bar; }
void negative_struct()      { Foo x = -bar; }
