diff options
author | Howard Hinnant <hhinnant@apple.com> | 2013-08-14 21:28:31 +0000 |
---|---|---|
committer | Howard Hinnant <hhinnant@apple.com> | 2013-08-14 21:28:31 +0000 |
commit | 113f13d2a5f952837f6308df132266febc6367af (patch) | |
tree | 60f4940b0e73125b3d4f71d3b3f4ef04657cc829 | |
parent | 9d31d6f3297cee27db193d9f567b5f611e87128e (diff) | |
download | bcm5719-llvm-113f13d2a5f952837f6308df132266febc6367af.tar.gz bcm5719-llvm-113f13d2a5f952837f6308df132266febc6367af.zip |
Relax complete-type check for functions and function pointers to allow void return type. This bug was exposed by Eli Friedman's commit to clang r188324. Anywhere this version of clang ships, this libc++ fix must follow. However this fix is compatible with previous clangs, and so this libc++ doesn't need to wait for this clang.
llvm-svn: 188413
-rw-r--r-- | libcxx/include/type_traits | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libcxx/include/type_traits b/libcxx/include/type_traits index 511a05288f2..73ece1ea2fa 100644 --- a/libcxx/include/type_traits +++ b/libcxx/include/type_traits @@ -2928,12 +2928,22 @@ struct __check_complete<_Rp (*)(_Param...)> { }; +template <class ..._Param> +struct __check_complete<void (*)(_Param...)> +{ +}; + template <class _Rp, class ..._Param> struct __check_complete<_Rp (_Param...)> : private __check_complete<_Rp> { }; +template <class ..._Param> +struct __check_complete<void (_Param...)> +{ +}; + template <class _Rp, class _Class, class ..._Param> struct __check_complete<_Rp (_Class::*)(_Param...)> : private __check_complete<_Class> |