When trying to switch to C++14 by default, some extra expressions become constexpr and this is one case we can't handle.
Technically I believe weakening the assert would be enough to fix the problem, but defaulted default constructors are extremely close to being allowed through which would lead to incorrect code (all of isDefaulted, isTrivial and hasFields contribute to the exclusion, as well as the fact that unions don't have default constructors). So I decided to explicitly check that we are dealing with a copy/move before executing that block.