I can do this import std.variant; struct Alpha { Variant something; this(Variant v){ something = v; } static Alpha build(T)(T v){ return Alpha( cast(Variant)v ); } } void main(){ auto a = Alpha.build!(int)( 6); auto b = Alpha.build!(string)( "hello"); auto l = new Alpha[](2); l[0] = a; l[1] = b; } If someone has better