Implement P0513R0, Poisoning the Hash.
commit17515fad4880e3406bc2334b88700f800f93a1be
authorville <ville@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Nov 2016 21:22:53 +0000 (14 21:22 +0000)
committerville <ville@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Nov 2016 21:22:53 +0000 (14 21:22 +0000)
treee1d2145486a1b5d3d50527b9b06b360d834db452
parentee6c971a8acfea1781882747acd8b99a5fcda55f
Implement P0513R0, Poisoning the Hash.
* include/bits/functional_hash.h (__poison_hash): New.
* include/bits/unique_ptr.h
(hash<unique_ptr<_Tp, _Dp>>): Derive from __poison_hash.
* include/std/optional (hash<optional<_Tp>>): Likewise.
* include/std/variant (hash<variant<_Types...>>): Likewise.
* testsuite/20_util/default_delete/48631_neg.cc: Adjust.
* testsuite/20_util/default_delete/void_neg.cc: Likewise.
* testsuite/20_util/optional/hash.cc: New.
* testsuite/20_util/unique_ptr/assign/48635_neg.cc: Adjust.
* testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Adjust.
* testsuite/20_util/unique_ptr/hash/1.cc: Add tests for
poisoned fancy pointer hashes.
* testsuite/20_util/variant/hash.cc: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242402 138bc75d-0d04-0410-961f-82ee72b054a4
12 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/functional_hash.h
libstdc++-v3/include/bits/unique_ptr.h
libstdc++-v3/include/std/optional
libstdc++-v3/include/std/variant
libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc
libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc
libstdc++-v3/testsuite/20_util/optional/hash.cc [copied from libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc with 52% similarity]
libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc
libstdc++-v3/testsuite/20_util/unique_ptr/hash/1.cc
libstdc++-v3/testsuite/20_util/variant/hash.cc [copied from libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc with 52% similarity]