When is
     __traits(compiles, { ... } )
preferred over
     is(typeof( { ... } ))
and vice versa when writing stuff like
     enum isCopyable(S) = is(typeof( { S foo = S.init; S copy = 
foo; } ));
?
Further, are there cases where the two idioms aren't exchangable?