```
template<typename To, typename From>
constexpr To bit_cast(const From& from) noexcept;
```

Each bit of the value representation of the result
is equal to the corresponding bit in the object representation
of from.

Padding bits of the To object are unspecified.

If there is no value of type To corresponding to the
value representation produced, the behavior is undefined.

If there are multiple such values, which value is produced is unspecified.

Remarks:
This function shall not participate in overload resolution unless:

- sizeof(To) == sizeof(From) is true;
- is_trivially_copyable_v<To> is true; and
- is_trivially_copyable_v<From> is true.

This function shall be constexpr if and only if
To, From, and the types of all subobjects
of To and From are types T such that:

- is_union_v<T> is false;
- is_pointer_v<T> is false;
- is_member_pointer_v<T> is false;
- is_volatile_v<T> is false; and
- T has no non-static data members of reference type.