struct Foo { int x; };
Foo foo;

void construct_struct_from_int()        { Foo x = Foo(5); }             // NOT YET IMPLEMENTED
void construct_struct_from_float2x2()   { Foo x = Foo(float2x2(0)); }
void construct_float_from_struct()      { float x = float(foo); }
void construct_float2_from_struct()     { float2 x = float2(foo); }
void construct_float2x2_from_struct()   { float2x2 x = float2x2(foo); }
void construct_float2x2_from_type()     { float2x2 x = float2x2(int); }
void construct_float2x2_from_function() { float2x2 x = float2x2(sqrt); }
