[Bug libstdc++/49058] [C++0x] Bind no-arguments functor failed using std::bind with -pedantic option.
paolo.carlini at oracle dot com
gcc-bugzilla@gcc.gnu.org
Sun May 22 23:47:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49058
--- Comment #16 from Paolo Carlini <paolo.carlini at oracle dot com> 2011-05-22 22:52:13 UTC ---
With enable_if becomes a tad more concise.
///////////////////
Index: include/std/functional
===================================================================
--- include/std/functional (revision 174044)
+++ include/std/functional (working copy)
@@ -1210,7 +1210,8 @@
// Call as const
template<typename... _Args, typename _Result
- = decltype( std::declval<const _Functor>()(
+ = decltype( std::declval<typename enable_if<(sizeof...(_Args) >= 0),
+ typename add_const<_Functor>::type>::type>()(
_Mu<_Bound_args>()( std::declval<const _Bound_args&>(),
std::declval<tuple<_Args...>&>() )... ) )>
_Result
@@ -1223,7 +1224,8 @@
// Call as volatile
template<typename... _Args, typename _Result
- = decltype( std::declval<volatile _Functor>()(
+ = decltype( std::declval<typename enable_if<(sizeof...(_Args) >= 0),
+ typename add_volatile<_Functor>::type>::type>()(
_Mu<_Bound_args>()( std::declval<volatile _Bound_args&>(),
std::declval<tuple<_Args...>&>() )... ) )>
_Result
@@ -1236,7 +1238,8 @@
// Call as const volatile
template<typename... _Args, typename _Result
- = decltype( std::declval<const volatile _Functor>()(
+ = decltype( std::declval<typename enable_if<(sizeof...(_Args) >= 0),
+ typename add_cv<_Functor>::type>::type>()(
_Mu<_Bound_args>()( std::declval<const volatile _Bound_args&>(),
std::declval<tuple<_Args...>&>() )... ) )>
_Result
More information about the Gcc-bugs
mailing list