From a14175560cca5da1f9ff776c5c7309473397d43d Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Fri, 8 Jun 2018 17:43:14 +0100 Subject: [PATCH] Define special members as defaulted * include/bits/ios_base.h (ios::Init::Init(const Init&)) (ios::Init::operator=): Define as defaulted. * include/bits/stl_bvector.h (_Bit_reference(const _Bit_reference&)): Likewise. * include/bits/stream_iterator.h (istream_iterator::operator=) (ostream_iterator::operator=): Likewise. * include/bits/streambuf_iterator.h (istreambuf_iterator::operator=) Likewise. * include/std/bitset (bitset::reference::reference(const reference&)): Likewise. * include/std/complex (complex::complex(const complex&)) (complex::complex(const complex&)) (complex::complex(const complex&)): Likewise. From-SVN: r261338 --- libstdc++-v3/ChangeLog | 16 ++++++++++++++++ libstdc++-v3/include/bits/ios_base.h | 5 +++++ libstdc++-v3/include/bits/stl_bvector.h | 4 ++++ libstdc++-v3/include/bits/stream_iterator.h | 8 ++++++++ libstdc++-v3/include/bits/streambuf_iterator.h | 5 +++++ libstdc++-v3/include/std/bitset | 4 ++++ libstdc++-v3/include/std/complex | 12 +++++++++--- 7 files changed, 51 insertions(+), 3 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 6d03df7b87c..84bc4a79622 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,19 @@ +2018-06-08 Jonathan Wakely + + * include/bits/ios_base.h (ios::Init::Init(const Init&)) + (ios::Init::operator=): Define as defaulted. + * include/bits/stl_bvector.h (_Bit_reference(const _Bit_reference&)): + Likewise. + * include/bits/stream_iterator.h (istream_iterator::operator=) + (ostream_iterator::operator=): Likewise. + * include/bits/streambuf_iterator.h (istreambuf_iterator::operator=) + Likewise. + * include/std/bitset (bitset::reference::reference(const reference&)): + Likewise. + * include/std/complex (complex::complex(const complex&)) + (complex::complex(const complex&)) + (complex::complex(const complex&)): Likewise. + 2018-06-07 Jonathan Wakely * include/bits/regex.h (sub_match): Add noexcept to default diff --git a/libstdc++-v3/include/bits/ios_base.h b/libstdc++-v3/include/bits/ios_base.h index c0c4e3b2abe..819afb96187 100644 --- a/libstdc++-v3/include/bits/ios_base.h +++ b/libstdc++-v3/include/bits/ios_base.h @@ -607,6 +607,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION Init(); ~Init(); +#if __cplusplus >= 201103L + Init(const Init&) = default; + Init& operator=(const Init&) = default; +#endif + private: static _Atomic_word _S_refcount; static bool _S_synced_with_stdio; diff --git a/libstdc++-v3/include/bits/stl_bvector.h b/libstdc++-v3/include/bits/stl_bvector.h index 24594044d7a..4527ce7832a 100644 --- a/libstdc++-v3/include/bits/stl_bvector.h +++ b/libstdc++-v3/include/bits/stl_bvector.h @@ -79,6 +79,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _Bit_reference() _GLIBCXX_NOEXCEPT : _M_p(0), _M_mask(0) { } +#if __cplusplus >= 201103L + _Bit_reference(const _Bit_reference&) = default; +#endif + operator bool() const _GLIBCXX_NOEXCEPT { return !!(*_M_p & _M_mask); } diff --git a/libstdc++-v3/include/bits/stream_iterator.h b/libstdc++-v3/include/bits/stream_iterator.h index 002310c07a2..7b682d2959e 100644 --- a/libstdc++-v3/include/bits/stream_iterator.h +++ b/libstdc++-v3/include/bits/stream_iterator.h @@ -74,6 +74,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _M_ok(__obj._M_ok) { } +#if __cplusplus >= 201103L + istream_iterator& operator=(const istream_iterator&) = default; +#endif + const _Tp& operator*() const { @@ -188,6 +192,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ostream_iterator(const ostream_iterator& __obj) : _M_stream(__obj._M_stream), _M_string(__obj._M_string) { } +#if __cplusplus >= 201103L + ostream_iterator& operator=(const ostream_iterator&) = default; +#endif + /// Writes @a value to underlying ostream using operator<<. If /// constructed with delimiter string, writes delimiter to ostream. ostream_iterator& diff --git a/libstdc++-v3/include/bits/streambuf_iterator.h b/libstdc++-v3/include/bits/streambuf_iterator.h index 292ef3a5335..8a3a382325a 100644 --- a/libstdc++-v3/include/bits/streambuf_iterator.h +++ b/libstdc++-v3/include/bits/streambuf_iterator.h @@ -121,6 +121,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION istreambuf_iterator(streambuf_type* __s) _GLIBCXX_USE_NOEXCEPT : _M_sbuf(__s), _M_c(traits_type::eof()) { } +#if __cplusplus >= 201103L + istreambuf_iterator& + operator=(const istreambuf_iterator&) noexcept = default; +#endif + /// Return the current character pointed to by iterator. This returns /// streambuf.sgetc(). It cannot be assigned. NB: The result of /// operator*() on an end of stream is undefined. diff --git a/libstdc++-v3/include/std/bitset b/libstdc++-v3/include/std/bitset index e598ea312a7..25e44d1553d 100644 --- a/libstdc++-v3/include/std/bitset +++ b/libstdc++-v3/include/std/bitset @@ -816,6 +816,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _M_bpos = _Base::_S_whichbit(__pos); } +#if __cplusplus >= 201103L + reference(const reference&) = default; +#endif + ~reference() _GLIBCXX_NOEXCEPT { } diff --git a/libstdc++-v3/include/std/complex b/libstdc++-v3/include/std/complex index 2e2c2c06560..2d1cc1831d0 100644 --- a/libstdc++-v3/include/std/complex +++ b/libstdc++-v3/include/std/complex @@ -1158,7 +1158,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Let the compiler synthesize the copy and assignment // operator. It always does a pretty good job. - // complex& operator=(const complex&); +#if __cplusplus >= 201103L + _GLIBCXX14_CONSTEXPR complex& operator=(const complex&) = default; +#endif template complex& @@ -1308,7 +1310,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } // The compiler will synthesize this, efficiently. - // complex& operator=(const complex&); +#if __cplusplus >= 201103L + _GLIBCXX14_CONSTEXPR complex& operator=(const complex&) = default; +#endif template complex& @@ -1460,7 +1464,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } // The compiler knows how to do this efficiently - // complex& operator=(const complex&); +#if __cplusplus >= 201103L + _GLIBCXX14_CONSTEXPR complex& operator=(const complex&) = default; +#endif template complex& -- 2.30.2