aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/std/functional
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2015-12-15 14:17:17 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2015-12-15 14:17:17 +0000
commit6666731254089eadcc09361ff815d0de80516c6d (patch)
tree0a5cb6699d130b249c2d67f5e877e85e97f25fca /libstdc++-v3/include/std/functional
parent5c036f3f0a3ca5980709c385477e0b0af1dbcd30 (diff)
downloadgcc-6666731254089eadcc09361ff815d0de80516c6d.zip
gcc-6666731254089eadcc09361ff815d0de80516c6d.tar.gz
gcc-6666731254089eadcc09361ff815d0de80516c6d.tar.bz2
Fix cv-qualifiers in std::bind invocation
PR libstdc++/68912 * include/std/functional (_Bind::operator()): Use lvalue functor to deduce return type. * testsuite/20_util/bind/68912.cc: New. From-SVN: r231652
Diffstat (limited to 'libstdc++-v3/include/std/functional')
-rw-r--r--libstdc++-v3/include/std/functional8
1 files changed, 4 insertions, 4 deletions
diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional
index 19caa96..8d39d62 100644
--- a/libstdc++-v3/include/std/functional
+++ b/libstdc++-v3/include/std/functional
@@ -1034,7 +1034,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
// Call unqualified
template<typename... _Args, typename _Result
- = decltype( std::declval<_Functor>()(
+ = decltype( std::declval<_Functor&>()(
_Mu<_Bound_args>()( std::declval<_Bound_args&>(),
std::declval<tuple<_Args...>&>() )... ) )>
_Result
@@ -1048,7 +1048,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
// Call as const
template<typename... _Args, typename _Result
= decltype( std::declval<typename enable_if<(sizeof...(_Args) >= 0),
- typename add_const<_Functor>::type>::type>()(
+ typename add_const<_Functor>::type&>::type>()(
_Mu<_Bound_args>()( std::declval<const _Bound_args&>(),
std::declval<tuple<_Args...>&>() )... ) )>
_Result
@@ -1062,7 +1062,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
// Call as volatile
template<typename... _Args, typename _Result
= decltype( std::declval<typename enable_if<(sizeof...(_Args) >= 0),
- typename add_volatile<_Functor>::type>::type>()(
+ typename add_volatile<_Functor>::type&>::type>()(
_Mu<_Bound_args>()( std::declval<volatile _Bound_args&>(),
std::declval<tuple<_Args...>&>() )... ) )>
_Result
@@ -1076,7 +1076,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
// Call as const volatile
template<typename... _Args, typename _Result
= decltype( std::declval<typename enable_if<(sizeof...(_Args) >= 0),
- typename add_cv<_Functor>::type>::type>()(
+ typename add_cv<_Functor>::type&>::type>()(
_Mu<_Bound_args>()( std::declval<const volatile _Bound_args&>(),
std::declval<tuple<_Args...>&>() )... ) )>
_Result