simplify has_member macro