diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2014-06-01 23:35:42 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2014-06-01 23:35:42 +0100 |
commit | 314efb66cf1d5f8eaa3676eee83ac7787d4e09d7 (patch) | |
tree | ccee8705d27798aa0956d514e5236e7c0c094400 | |
parent | 54dbf90c373372e90014fd8bbc1ad44fd824c31d (diff) | |
download | gcc-314efb66cf1d5f8eaa3676eee83ac7787d4e09d7.zip gcc-314efb66cf1d5f8eaa3676eee83ac7787d4e09d7.tar.gz gcc-314efb66cf1d5f8eaa3676eee83ac7787d4e09d7.tar.bz2 |
uses_allocator.h (__uses_allocator_helper): Simplify.
* include/bits/uses_allocator.h (__uses_allocator_helper): Simplify.
(__uses_allocator_arg): Remove unused type.
(__uses_alloc0): Turn into a trivial type.
(__uses_alloc): Add missing template parameter in primary template.
(__uses_alloc_impl): Rename to __uses_alloc_t.
From-SVN: r211121
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/uses_allocator.h | 31 |
2 files changed, 20 insertions, 17 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 4d69c25..56e7d34 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -19,6 +19,12 @@ Likewise. * testsuite/experimental/string_view/operations/to_string/1.cc: New. + * include/bits/uses_allocator.h (__uses_allocator_helper): Simplify. + (__uses_allocator_arg): Remove unused type. + (__uses_alloc0): Turn into a trivial type. + (__uses_alloc): Add missing template parameter in primary template. + (__uses_alloc_impl): Rename to __uses_alloc_t. + 2014-05-30 Jonathan Wakely <jwakely@redhat.com> * testsuite/lib/libstdc++.exp (libstdc++_init): Adjust regexp to diff --git a/libstdc++-v3/include/bits/uses_allocator.h b/libstdc++-v3/include/bits/uses_allocator.h index 10131c0..7281508 100644 --- a/libstdc++-v3/include/bits/uses_allocator.h +++ b/libstdc++-v3/include/bits/uses_allocator.h @@ -45,35 +45,33 @@ _GLIBCXX_HAS_NESTED_TYPE(allocator_type) template<typename _Tp, typename _Alloc, bool = __has_allocator_type<_Tp>::value> struct __uses_allocator_helper - : public false_type { }; + : false_type { }; template<typename _Tp, typename _Alloc> struct __uses_allocator_helper<_Tp, _Alloc, true> - : public integral_constant<bool, is_convertible<_Alloc, - typename _Tp::allocator_type>::value> + : is_convertible<_Alloc, typename _Tp::allocator_type>::type { }; /// [allocator.uses.trait] template<typename _Tp, typename _Alloc> struct uses_allocator - : public integral_constant<bool, - __uses_allocator_helper<_Tp, _Alloc>::value> + : __uses_allocator_helper<_Tp, _Alloc>::type { }; - template<typename _Tp, typename _Alloc, typename... _Args> - struct __uses_allocator_arg - : is_constructible<_Tp, _Alloc, _Args...> - { static_assert( uses_allocator<_Tp, _Alloc>::value, "uses allocator" ); }; - struct __uses_alloc_base { }; + struct __uses_alloc0 : __uses_alloc_base - { struct _Anything { _Anything(...) { } } _M_a; }; + { + struct _Sink { void operator=(const void*) { } } _M_a; + }; + template<typename _Alloc> struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; }; + template<typename _Alloc> struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; }; - template<bool, typename _Alloc, typename... _Args> + template<bool, typename _Tp, typename _Alloc, typename... _Args> struct __uses_alloc; template<typename _Tp, typename _Alloc, typename... _Args> @@ -89,15 +87,14 @@ _GLIBCXX_HAS_NESTED_TYPE(allocator_type) : __uses_alloc0 { }; template<typename _Tp, typename _Alloc, typename... _Args> - struct __uses_alloc_impl - : __uses_alloc<uses_allocator<_Tp, _Alloc>::value, _Tp, _Alloc, _Args...> - { }; + using __uses_alloc_t = + __uses_alloc<uses_allocator<_Tp, _Alloc>::value, _Tp, _Alloc, _Args...>; template<typename _Tp, typename _Alloc, typename... _Args> - __uses_alloc_impl<_Tp, _Alloc, _Args...> + inline __uses_alloc_t<_Tp, _Alloc, _Args...> __use_alloc(const _Alloc& __a) { - __uses_alloc_impl<_Tp, _Alloc, _Args...> __ret; + __uses_alloc_t<_Tp, _Alloc, _Args...> __ret; __ret._M_a = &__a; return __ret; } |