diff options
author | dim <dim@FreeBSD.org> | 2017-03-22 07:09:30 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2017-03-22 07:09:30 +0000 |
commit | 4f528fdef401ac25562b7f06b49c8c1bca6c8a3c (patch) | |
tree | 5b86fe7e16e085869202f49948aff1e32a8052f1 /lib/libstdthreads | |
parent | 1ae0f6f0c68c69943a9669a175bc18c0b345e786 (diff) | |
download | FreeBSD-src-4f528fdef401ac25562b7f06b49c8c1bca6c8a3c.zip FreeBSD-src-4f528fdef401ac25562b7f06b49c8c1bca6c8a3c.tar.gz |
Pull in r283944 from upstream libc++ trunk (by Eric Fiselier):
Fix std::pair on FreeBSD
Summary:
FreeBSD ships an old ABI for std::pair which requires that it have
non-trivial copy/move constructors. Currently the non-trivial
copy/move is achieved by providing explicit definitions of the
constructors. This is problematic because it means the constructors
don't SFINAE properly. In order to SFINAE copy/move constructors they
have to be explicitly defaulted and hense non-trivial.
This patch attempts to provide SFINAE'ing copy/move constructors for
std::pair while still making them non-trivial. It does this by adding
a base class with a non-trivial copy constructor and then allowing
pair's constructors to be generated by the compiler. This also allows
the constructors to be constexpr.
Reviewers: emaste, theraven, rsmith, dim
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D25389
This should fix building www/chromium 57.0.2987.110 on stable/11,
without further hacks. Direct commit to stable/11, since head already
has libc++ 4.0, which includes this fix.
Reported by: cpm
Diffstat (limited to 'lib/libstdthreads')
0 files changed, 0 insertions, 0 deletions