mixin template FinalCtor()
import std.traits : FieldNameTuple;
static assert(FieldNameTuple!(typeof(this)).length == typeof(typeof(this).tupleof).length);
static foreach (i; 0 .. typeof(typeof(this).tupleof).length)
result ~= mixin(`"typeof(this.tupleof)[`, i, `] `, FieldNameTuple!(typeof(this))[i], `, "`);
import std.traits : FieldNameTuple;
static foreach (i; 0 .. this.tupleof.length)
this.tupleof[i] = mixin(FieldNameTuple!(typeof(this))[i]);
static assert( __traits(compiles, S()));
static assert(!__traits(compiles, S(1)));
static assert(!__traits(compiles, S(1, 2.0)));
static assert( __traits(compiles, S(1, 2.0, "three")));
S s = S(1, 2.0, "three");