diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2019-05-31 15:58:05 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2019-05-31 15:58:05 +0100 |
commit | b1bb4869e2708c1385352e4d960833e1b258859b (patch) | |
tree | eea6af3e88138f26abea6feb0f42a99494a223a2 /libstdc++-v3 | |
parent | 1facd6278b85e2866b487b72c1f5f671c5ae9e4a (diff) | |
download | gcc-b1bb4869e2708c1385352e4d960833e1b258859b.zip gcc-b1bb4869e2708c1385352e4d960833e1b258859b.tar.gz gcc-b1bb4869e2708c1385352e4d960833e1b258859b.tar.bz2 |
Add noexcept to tuple<> and simplify tuple<T1,T2> noexcept-specifiers
* include/std/tuple (tuple<>): Add noexcept to allocator-extended
constructors.
(tuple<T1, T2>::__nothrow_default_constructible()): New helper
function.
(tuple<T1, T2>::tuple(), explicit tuple<T1, T2>::tuple()): Use helper.
From-SVN: r271814
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/std/tuple | 27 |
2 files changed, 23 insertions, 12 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 7dc8e58..3d9d591 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,13 @@ 2019-05-31 Jonathan Wakely <jwakely@redhat.com> + * include/std/tuple (tuple<>): Add noexcept to allocator-extended + constructors. + (tuple<T1, T2>::__nothrow_default_constructible()): New helper + function. + (tuple<T1, T2>::tuple(), explicit tuple<T1, T2>::tuple()): Use helper. + +2019-05-31 Jonathan Wakely <jwakely@redhat.com> + * src/c++98/bitmap_allocator.cc: Add using-declaration for size_t. PR libstdc++/90682 diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple index b81157c..64516b1 100644 --- a/libstdc++-v3/include/std/tuple +++ b/libstdc++-v3/include/std/tuple @@ -898,9 +898,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION tuple() = default; // No-op allocator constructors. template<typename _Alloc> - tuple(allocator_arg_t, const _Alloc&) { } + tuple(allocator_arg_t, const _Alloc&) noexcept { } template<typename _Alloc> - tuple(allocator_arg_t, const _Alloc&, const tuple&) { } + tuple(allocator_arg_t, const _Alloc&, const tuple&) noexcept { } }; /// Partial specialization, 2-element tuple. @@ -925,11 +925,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template<typename _U1, typename _U2> - static constexpr bool __nothrow_constructible() - { - return __and_<is_nothrow_constructible<_T1, _U1>, - is_nothrow_constructible<_T2, _U2>>::value; - } + static constexpr bool __nothrow_constructible() + { + return __and_<is_nothrow_constructible<_T1, _U1>, + is_nothrow_constructible<_T2, _U2>>::value; + } + + static constexpr bool __nothrow_default_constructible() + { + return __and_<is_nothrow_default_constructible<_T1>, + is_nothrow_default_constructible<_T2>>::value; + } public: template <typename _U1 = _T1, @@ -939,8 +945,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __is_implicitly_default_constructible<_U2>> ::value, bool>::type = true> constexpr tuple() - noexcept(__and_<is_nothrow_default_constructible<_T1>, - is_nothrow_default_constructible<_T2>>::value) + noexcept(__nothrow_default_constructible()) : _Inherited() { } template <typename _U1 = _T1, @@ -954,8 +959,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __is_implicitly_default_constructible<_U2>>>> ::value, bool>::type = false> explicit constexpr tuple() - noexcept(__and_<is_nothrow_default_constructible<_T1>, - is_nothrow_default_constructible<_T2>>::value) + noexcept(__nothrow_default_constructible()) : _Inherited() { } // Shortcut for the cases where constructors taking _T1, _T2 @@ -1108,7 +1112,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION && _TCC<_Dummy>::template _ImplicitlyConvertibleTuple<_T1, _T2>(), bool>::type=true> - tuple(allocator_arg_t __tag, const _Alloc& __a, const _T1& __a1, const _T2& __a2) : _Inherited(__tag, __a, __a1, __a2) { } |