__compressed_pair takes and passes it's constructor arguments by value. This causes arguments to be moved 3 times instead of once. This patch addresses that issue and fixes constexpr on the constructors.
A much better alternative to this patch is D27565, which is about 80% shorter than the current implementation but may be ABI breaking.