`std::shared_future<R>::get' member function is specified as const-qualified in [futures.shared_future]. However, libstdc++'s implementation is not. A testcase would be as follows; //-------------------------------------------------- #include <future> int f() { return 42; } int main() { std::shared_future<int> const ftr(std::async(&f)); ftr.get(); // Line 11 } //-------------------------------------------------- For the above testcase, GCC 4.8.0 20121230 complains as follows; main.cpp: In function 'int main()': main.cpp:11:11: error: passing 'const std::shared_future<int>' as 'this' argument of 'const _Res& std::shared_future<_Res>::get() [with _Res = int]' discards qualifiers [-fpermissive] ftr.get(); ^
The fix should be as simple as adding "const" to __basic_future::_M_get_result and the three shared_future::get() functions.
Author: redi Date: Sat Jan 19 23:42:55 2013 New Revision: 195314 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=195314 Log: 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. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/std/future trunk/libstdc++-v3/testsuite/30_threads/shared_future/members/get.cc
fixed for 4.8
Author: redi Date: Thu Sep 26 19:04:04 2013 New Revision: 202956 URL: http://gcc.gnu.org/viewcvs?rev=202956&root=gcc&view=rev Log: Backport from mainline 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. Modified: branches/gcc-4_7-branch/libstdc++-v3/ChangeLog branches/gcc-4_7-branch/libstdc++-v3/include/std/future