@
safe nothrow
static if(is(T == const) || is(T == immutable))
static if(!(isBasicType!T || isDynamicArray!T || isPointer!T))
static if(!(is(T == class) || is(T == interface)))
static if(is(T == struct))
static if(!(hasElaborateAssign!U || hasElaborateCopyConstructor!U || hasElaborateDestructor!U))