diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2015-08-20 21:19:58 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2015-08-20 21:19:58 +0100 |
commit | 89f06948596bcd48096396316c4a8108e2934820 (patch) | |
tree | 5f47273030fc3c8bc561170873d13abeda811c64 | |
parent | 92695fbb294bf7fe051041e3143f51c37cc22f82 (diff) | |
download | gcc-89f06948596bcd48096396316c4a8108e2934820.zip gcc-89f06948596bcd48096396316c4a8108e2934820.tar.gz gcc-89f06948596bcd48096396316c4a8108e2934820.tar.bz2 |
any (__any_caster): Define at namespace scope so the name is visible to name lookup.
* include/experimental/any (__any_caster): Define at namespace scope
so the name is visible to name lookup.
* testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error.
From-SVN: r227042
-rw-r--r-- | libstdc++-v3/ChangeLog | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/experimental/any | 19 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc | 2 |
3 files changed, 16 insertions, 9 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 0c278c8..ef0367b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,9 @@ 2015-08-20 Jonathan Wakely <jwakely@redhat.com> + * include/experimental/any (__any_caster): Define at namespace scope + so the name is visible to name lookup. + * testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error. + * python/Makefile.am: Ensure gdb.py is installed for libstdc++ not libstdc++fs. * python/Makefile.in: Regenerate. diff --git a/libstdc++-v3/include/experimental/any b/libstdc++-v3/include/experimental/any index dae82b5..4cdc1dc 100644 --- a/libstdc++-v3/include/experimental/any +++ b/libstdc++-v3/include/experimental/any @@ -296,14 +296,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _Storage _M_storage; template<typename _Tp> - friend void* __any_caster(const any* __any) - { - if (__any->_M_manager != &_Manager<decay_t<_Tp>>::_S_manage) - return nullptr; - _Arg __arg; - __any->_M_manager(_Op_access, __any, &__arg); - return __arg._M_obj; - } + friend void* __any_caster(const any* __any); // Manage in-place contained object. template<typename _Tp> @@ -396,6 +389,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } // @} + template<typename _Tp> + void* __any_caster(const any* __any) + { + if (__any->_M_manager != &any::_Manager<decay_t<_Tp>>::_S_manage) + return nullptr; + any::_Arg __arg; + __any->_M_manager(any::_Op_access, __any, &__arg); + return __arg._M_obj; + } + /** * @brief Access the contained object. * diff --git a/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc b/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc index 1d1180c..5c7595d 100644 --- a/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc +++ b/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc @@ -26,5 +26,5 @@ void test01() using std::experimental::any_cast; const any y(1); - any_cast<int&>(y); // { dg-error "qualifiers" "" { target { *-*-* } } 360 } + any_cast<int&>(y); // { dg-error "qualifiers" "" { target { *-*-* } } 353 } } |