This patch adds the library components needed for contracts in C++2a.
The wording says that a contract_violation object is populated in an implementation-defined manner. A private constructor that the compiler can call seems like the most sensible (and obvious) solution.
Needs _LIBCPP_TYPE_VIS