]> git.ipfire.org Git - thirdparty/gcc.git/commit
PR libstdc++/90220 Fix any_cast for non-object types
authorJonathan Wakely <jwakely@redhat.com>
Thu, 23 May 2019 15:08:58 +0000 (16:08 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Thu, 23 May 2019 15:08:58 +0000 (16:08 +0100)
commitf82a8e0a73b6be5680a8f3a64d7ae708f549f0a3
tree4d79ad94bad0a73cc0cdbb581d21a540962ab476
parent7b39855ba1e4f45741437e3175ec30b480ccc560
PR libstdc++/90220 Fix any_cast for non-object types

Backport from mainline
2019-04-24  Jonathan Wakely  <jwakely@redhat.com>

PR libstdc++/90220 (partial)
* include/std/any (any_cast<T>(any*), any_cast<T>(const any*)): Do
not attempt ill-formed static_cast to pointers to non-object types.
* testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
function types.

Backport from mainline
2019-04-24  Jonathan Wakely  <jwakely@redhat.com>

PR libstdc++/90220
* include/std/any (__any_caster): Use remove_cv_t instead of decay_t.
Avoid a runtime check for types that can never be stored in std::any.
* testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
array types.

Backport from mainline
2019-05-23  Jonathan Wakely  <jwakely@redhat.com>

PR libstdc++/90220
* include/experimental/any (__any_caster): Constrain to only be
callable for object types. Use remove_cv_t instead of decay_t.
If the type decays or isn't copy constructible, compare the manager
function to a dummy specialization.
(__any_caster): Add overload constrained for non-object types.
(any::_Manager_internal<_Op>): Add dummy specialization.
* testsuite/experimental/any/misc/any_cast.cc: Test function types
and array types.

From-SVN: r271565
libstdc++-v3/ChangeLog
libstdc++-v3/include/experimental/any
libstdc++-v3/include/std/any
libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc
libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc