- __is_copy_constructible
- __is_nothrow_copy_constructible
- __is_trivially_copy_constructible
This is information that the compiler already has, and should be exposed
so that the library doesn't need to reimplement the exact same
functionality.
Unlike their default-constructible cousins, the copy-construcitble
traits can't be implemented using __is_constructible, etc., because we
can't form references to void, and references are a fundamental part
of copy constructors.
This was originally a part of D116280.
Depends on D135177.
So this one is a whole 'thing'. The Clang definition of 'trivially copy constructible' is a few DRs behind. We should probably discuss this with libcxx to make sure use of this wouldn't be broken.