r326307 and r327870 made changes that allowed C structs to have strong and weak fields in ARC and be non-trivial. This patch make changes that allow using the following type traits for non-trivial C structs:
has_trivial_assign
has_trivial_move_assign
has_trivial_copy
has_trivial_move_constructor
has_trivial_constructor
has_trivial_destructor