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);