Define special members as defaulted
authorJonathan Wakely <jwakely@redhat.com>
Fri, 8 Jun 2018 16:43:14 +0000 (17:43 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Fri, 8 Jun 2018 16:43:14 +0000 (17:43 +0100)
* 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<float>::complex(const complex&))
(complex<double>::complex(const complex&))
(complex<long double>::complex(const complex&)): Likewise.

From-SVN: r261338

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/ios_base.h
libstdc++-v3/include/bits/stl_bvector.h
libstdc++-v3/include/bits/stream_iterator.h
libstdc++-v3/include/bits/streambuf_iterator.h
libstdc++-v3/include/std/bitset
libstdc++-v3/include/std/complex

index 6d03df7b87cad7e1ccac68455b1d05dff7a86c34..84bc4a79622aa93f33c5d1112f658e004b518f14 100644 (file)
@@ -1,3 +1,19 @@
+2018-06-08  Jonathan Wakely  <jwakely@redhat.com>
+
+       * 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<float>::complex(const complex&))
+       (complex<double>::complex(const complex&))
+       (complex<long double>::complex(const complex&)): Likewise.
+
 2018-06-07  Jonathan Wakely  <jwakely@redhat.com>
 
        * include/bits/regex.h (sub_match): Add noexcept to default
index c0c4e3b2abe3c9d6ca86f70670705f7abd38b24b..819afb96187627d7010a8d47bb4720452161e65d 100644 (file)
@@ -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;
index 24594044d7ac92b5835682fffe0063f682a7272d..4527ce7832aa99c941f9f7ef54278b4af19c98d5 100644 (file)
@@ -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); }
 
index 002310c07a21d5c0337ca00b3884d450bf79fec6..7b682d2959e5efd574900396e5652a4f83a1873a 100644 (file)
@@ -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&
index 292ef3a5335445575ec1e24a540f29a8ec131a20..8a3a382325a0e92d8e2bf9debdf199d6e6fa7702 100644 (file)
@@ -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.
index e598ea312a79cc37d741c0bd13c1599e5f05a5a6..25e44d1553d9c499780a231a1cbb5593ac12f5b6 100644 (file)
@@ -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
        { }
 
index 2e2c2c06560680b288cb2617ffce7a53e264ac81..2d1cc1831d0a5d9fb07a0b5a15a44ed23b282c51 100644 (file)
@@ -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<typename _Tp>
         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<typename _Tp>
         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<typename _Tp>
         complex&