module remedy.math.matrix; struct Vector4 { float x = 0.0f; float y = 0.0f; float z = 0.0f; float w = 0.0f; static immutable zero = Vector4( 0.0f, 0.0f, 0.0f, 0.0f ); static immutable one = Vector4( 1.0f, 1.0f, 1.0f, 1.0f ); static immutable right = Vector4( 1.0f, 0.0f, 0.0f, 0.0f ); static immutable up = Vector4( 0.0f, 1.0f, 0.0f, 0.0f ); static immutable forward = Vector4( 0.0f, 0.0f, 1.0f, 0.0f ); static immutable origin = Vector4( 0.0f, 0.0f, 0.0f, 0.0f ); static immutable identity = Vector4( 0.0f, 0.0f, 0.0f, 1.0f ); } struct Matrix4 { union { struct { Vector4 x = Vector4.right; Vector4 y = Vector4.up; Vector4 z = Vector4.forward; Vector4 t = Vector4.zero; } float[16] m; Vector4[4] v; } static immutable Matrix4 identity = Matrix4.init; } The final line causes the error: static immutable Matrix4 identity = Matrix4.init; Remove the initialisation ( = Matrix4.init), and it works fine.
This compiles fine on dmd 2.059 Win32.
So it does. Resolved :)