aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2015-08-20 21:19:58 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2015-08-20 21:19:58 +0100
commit89f06948596bcd48096396316c4a8108e2934820 (patch)
tree5f47273030fc3c8bc561170873d13abeda811c64
parent92695fbb294bf7fe051041e3143f51c37cc22f82 (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--libstdc++-v3/include/experimental/any19
-rw-r--r--libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc2
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 }
}