struct _Bit_reference
{
+ private:
+ template<typename, typename> friend class vector;
+ friend struct _Bit_iterator;
+ friend struct _Bit_const_iterator;
+
+ _GLIBCXX20_CONSTEXPR
+ _Bit_reference() _GLIBCXX_NOEXCEPT : _M_p(0), _M_mask(0) { }
+
_Bit_type * _M_p;
_Bit_type _M_mask;
_Bit_reference(_Bit_type * __x, _Bit_type __y)
: _M_p(__x), _M_mask(__y) { }
- _GLIBCXX20_CONSTEXPR
- _Bit_reference() _GLIBCXX_NOEXCEPT : _M_p(0), _M_mask(0) { }
-
+ public:
#if __cplusplus >= 201103L
_Bit_reference(const _Bit_reference&) = default;
#endif
_WordT* _M_wp;
size_t _M_bpos;
- // left undefined
- reference();
-
- public:
_GLIBCXX23_CONSTEXPR
reference(bitset& __b, size_t __pos) _GLIBCXX_NOEXCEPT
{
_M_bpos = _Base::_S_whichbit(__pos);
}
+ public:
#if __cplusplus >= 201103L
reference(const reference&) = default;
#endif
--- /dev/null
+// { dg-do compile { target c++11 } }
+
+#include <bitset>
+
+using namespace std;
+
+static_assert( ! is_default_constructible<bitset<10>::reference>::value,
+ "std::bitset<N>::reference is not default constructible");
+
+static_assert( ! is_constructible<bitset<10>::reference, bitset<10>&, size_t>::value,
+ "std::bitset<N>::reference is not default constructible");
--- /dev/null
+// { dg-do compile { target c++11 } }
+
+#include <vector>
+
+static_assert(
+ !std::is_default_constructible<std::vector<bool>::reference>::value,
+ "std::vector<bool>::reference is not default constructible"
+ );