diff options
| author | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-10-02 20:21:52 +0000 |
|---|---|---|
| committer | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-10-02 20:21:52 +0000 |
| commit | e4982c51c5d26db6b143bfe79d65b01e207353e7 (patch) | |
| tree | 1111ea7381bdb89e659bbb85a9052b332deb9acc /libstdc++-v3/include/std/functional | |
| parent | f6dd9c9d6b9fa8ce08da1864d09991b1a841b540 (diff) | |
| download | ppe42-gcc-e4982c51c5d26db6b143bfe79d65b01e207353e7.tar.gz ppe42-gcc-e4982c51c5d26db6b143bfe79d65b01e207353e7.zip | |
2013-10-02 Jonathan Wakely <jwakely.gcc@gmail.com>
Daniel Krugler <daniel.kruegler@gmail.com>
PR libstdc++/58569
* include/std/functional (function::_CheckResult): Move to namespace
scope and rename to __check_func_return_type.
* testsuite/20_util/function/58569.cc: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@203132 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/include/std/functional')
| -rw-r--r-- | libstdc++-v3/include/std/functional | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional index 73cddfe0f7a..eaa4509a420 100644 --- a/libstdc++-v3/include/std/functional +++ b/libstdc++-v3/include/std/functional @@ -2128,6 +2128,10 @@ _GLIBCXX_HAS_NESTED_TYPE(result_type) } }; + template<typename _From, typename _To> + using __check_func_return_type + = __or_<is_void<_To>, is_convertible<_From, _To>>; + /** * @brief Primary class template for std::function. * @ingroup functors @@ -2145,16 +2149,8 @@ _GLIBCXX_HAS_NESTED_TYPE(result_type) using _Invoke = decltype(__callable_functor(std::declval<_Functor&>()) (std::declval<_ArgTypes>()...) ); - template<typename _CallRes, typename _Res1> - struct _CheckResult - : is_convertible<_CallRes, _Res1> { }; - - template<typename _CallRes> - struct _CheckResult<_CallRes, void> - : true_type { }; - template<typename _Functor> - using _Callable = _CheckResult<_Invoke<_Functor>, _Res>; + using _Callable = __check_func_return_type<_Invoke<_Functor>, _Res>; template<typename _Cond, typename _Tp> using _Requires = typename enable_if<_Cond::value, _Tp>::type; |

