any (__any_caster): Define at namespace scope so the name is visible to name lookup.
authorJonathan Wakely <jwakely@redhat.com>
Thu, 20 Aug 2015 20:19:58 +0000 (21:19 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Thu, 20 Aug 2015 20:19:58 +0000 (21:19 +0100)
* 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

libstdc++-v3/ChangeLog
libstdc++-v3/include/experimental/any
libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc

index 0c278c8665768875364516c23dfb695e2ea43686..ef0367b88b534ef31738c662fbfa80ecfb8d321a 100644 (file)
@@ -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.
index dae82b56e2f1531034ec6d5308b8f7207d0b844b..4cdc1dc12c2eb7d6cd2dbd029a7d9eb84bf67319 100644 (file)
@@ -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.
    *
index 1d1180c36db1d252dc28061f7913a49c1c301ed1..5c7595d79ef311f075df4c748f9327688f91c526 100644 (file)
@@ -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 }
 }