]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR libstdc++/55861 ([C++11] `std::shared_future::get' is not const-qualified)
authorJonathan Wakely <jwakely.gcc@gmail.com>
Sat, 19 Jan 2013 23:42:55 +0000 (23:42 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Sat, 19 Jan 2013 23:42:55 +0000 (23:42 +0000)
PR libstdc++/55861
* include/std/future (_State_base::_S_check(const shared_ptr<T>&)):
Fix return type.
(__basic_future::_M_get_result()): Const qualify.
(shared_future::get()): Likewise.
* testsuite/30_threads/shared_future/members/get.cc: Use const
objects.

From-SVN: r195314

libstdc++-v3/ChangeLog
libstdc++-v3/include/std/future
libstdc++-v3/testsuite/30_threads/shared_future/members/get.cc

index 39fe5877382bf6155da536658d204bec774c2ff2..e8ccef0b5ebad8c4296707012132dde340d890cf 100644 (file)
@@ -1,3 +1,13 @@
+2013-01-19  Jonathan Wakely  <jwakely.gcc@gmail.com>
+
+       PR libstdc++/55861
+       * include/std/future (_State_base::_S_check(const shared_ptr<T>&)):
+       Fix return type.
+       (__basic_future::_M_get_result()): Const qualify.
+       (shared_future::get()): Likewise.
+       * testsuite/30_threads/shared_future/members/get.cc: Use const
+       objects.
+
 2013-01-16  Jonathan Wakely  <jwakely.gcc@gmail.com>
 
        PR libstdc++/55043 (again)
index 2ecf438fc1e311fd915a1e53a761a5ac961520e6..6cccd3d3f2a17983da8edd62466ba8f7c75c0e3e 100644 (file)
@@ -1,6 +1,6 @@
 // <future> -*- C++ -*-
 
-// Copyright (C) 2009-2012 Free Software Foundation, Inc.
+// Copyright (C) 2009-2013 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -447,7 +447,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __setter(promise<void>* __prom);
 
       template<typename _Tp>
-        static bool
+        static void
         _S_check(const shared_ptr<_Tp>& __p)
         {
           if (!static_cast<bool>(__p))
@@ -583,7 +583,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     protected:
       /// Wait for the state to be ready and rethrow any stored exception
       __result_type
-      _M_get_result()
+      _M_get_result() const
       {
         _State_base::_S_check(_M_state);
         _Result_base& __res = _M_state->wait();
@@ -794,12 +794,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       /// Retrieving the value
       const _Res&
-      get()
-      {
-       typename _Base_type::__result_type __r = this->_M_get_result();
-       _Res& __rs(__r._M_value());
-       return __rs;
-      }
+      get() const { return this->_M_get_result()._M_value(); }
     };
 
   /// Partial specialization for shared_future<R&>
@@ -838,7 +833,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       /// Retrieving the value
       _Res&
-      get() { return this->_M_get_result()._M_get(); }
+      get() const { return this->_M_get_result()._M_get(); }
     };
 
   /// Explicit specialization for shared_future<void>
@@ -877,7 +872,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       // Retrieving the value
       void
-      get() { this->_M_get_result(); }
+      get() const { this->_M_get_result(); }
     };
 
   // Now we can define the protected __basic_future constructors.
index 4c8ef822f087e2bd48a84294ad76e9bc8f8416d9..9d2628dff62310f16a9b634889280aedff4aa163 100644 (file)
@@ -6,7 +6,7 @@
 // { dg-require-gthreads "" }
 // { dg-require-atomic-builtins "" }
 
-// Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+// Copyright (C) 2009-2013 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -34,7 +34,7 @@ void test01()
   bool test __attribute__((unused)) = true;
 
   std::promise<int> p1;
-  std::shared_future<int> f1(p1.get_future());
+  const std::shared_future<int> f1(p1.get_future());
   std::shared_future<int> f2(f1);
 
   p1.set_value(value);
@@ -47,7 +47,7 @@ void test02()
   bool test __attribute__((unused)) = true;
 
   std::promise<int&> p1;
-  std::shared_future<int&> f1(p1.get_future());
+  const std::shared_future<int&> f1(p1.get_future());
   std::shared_future<int&> f2(f1);
 
   p1.set_value(value);
@@ -60,7 +60,7 @@ void test03()
   bool test __attribute__((unused)) = true;
 
   std::promise<void> p1;
-  std::shared_future<void> f1(p1.get_future());
+  const std::shared_future<void> f1(p1.get_future());
   std::shared_future<void> f2(f1);
 
   p1.set_value();