Enum member isCopyConstructable

Checks to see if a type is copy constructable - postblit doesn't count.

enum isCopyConstructable(T...) = __traits(compiles, () { auto r = U.init; U copy = r; } ) && !hasMember!(U, "__xpostblit");

Returns false if there's a user defined postblit.

Example

mixin copyConstructableKinds;

static assert( isCopyConstructable!KindPOD);
static assert( isCopyConstructable!KindHasCopyContrustor);
static assert(!isCopyConstructable!KindHasPostBlit);
static assert( isCopyConstructable!KindContainsPOD);
static assert( isCopyConstructable!KindContainsTypeWithNonTrivialCopyConstructor);
static assert(!isCopyConstructable!KindContainsTypeWithPostBlit);