45 :
public _GLIBCXX_STD_C::bitset<_Nb>
46#if __cplusplus < 201103L
50 typedef _GLIBCXX_STD_C::bitset<_Nb>
_Base;
56#if __cplusplus >= 201103L
57 typedef typename _Base::reference reference;
61 :
private _Base::reference
64 typedef typename _Base::reference _Base_ref;
69 reference(
const _Base_ref& __base,
bitset* __seq) _GLIBCXX_NOEXCEPT
71 , _Safe_iterator_base(__seq,
false)
75 reference(
const reference& __x) _GLIBCXX_NOEXCEPT
77 , _Safe_iterator_base(__x,
false)
81 operator=(
bool __x) _GLIBCXX_NOEXCEPT
83 _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(),
84 _M_message(__gnu_debug::__msg_bad_bitset_write)
86 *
static_cast<_Base_ref*
>(
this) = __x;
91 operator=(
const reference& __x) _GLIBCXX_NOEXCEPT
93 _GLIBCXX_DEBUG_VERIFY(!__x._M_singular(),
94 _M_message(__gnu_debug::__msg_bad_bitset_read)
96 _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(),
97 _M_message(__gnu_debug::__msg_bad_bitset_write)
99 *
static_cast<_Base_ref*
>(
this) = __x;
104 operator~()
const _GLIBCXX_NOEXCEPT
106 _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(),
107 _M_message(__gnu_debug::__msg_bad_bitset_read)
108 ._M_iterator(*
this));
109 return ~(*
static_cast<const _Base_ref*
>(
this));
112 operator bool()
const _GLIBCXX_NOEXCEPT
114 _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(),
115 _M_message(__gnu_debug::__msg_bad_bitset_read)
116 ._M_iterator(*
this));
117 return *
static_cast<const _Base_ref*
>(
this);
121 flip() _GLIBCXX_NOEXCEPT
123 _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(),
124 _M_message(__gnu_debug::__msg_bad_bitset_flip)
125 ._M_iterator(*
this));
133 _GLIBCXX_CONSTEXPR
bitset() _GLIBCXX_NOEXCEPT
136#if __cplusplus >= 201103L
137 constexpr bitset(
unsigned long long __val)
noexcept
139 bitset(
unsigned long __val)
143 template<
typename _CharT,
typename _Traits,
typename _Alloc>
147 typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
149 typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
151 :
_Base(__str, __pos, __n) { }
155 template<
class _CharT,
class _Traits,
class _Alloc>
158 typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
160 typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
162 _CharT __zero, _CharT __one = _CharT(
'1'))
163 :
_Base(__str, __pos, __n, __zero, __one) { }
168#if __cplusplus >= 201103L
169 template<
typename _CharT>
172 bitset(
const _CharT* __str,
173 typename std::basic_string<_CharT>::size_type __n
175 _CharT __zero = _CharT(
'0'), _CharT __one = _CharT(
'1'))
176 :
_Base(__str, __n, __zero, __one) { }
182 operator&=(
const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT
190 operator|=(
const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT
198 operator^=(
const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT
206 operator<<=(
size_t __pos) _GLIBCXX_NOEXCEPT
214 operator>>=(
size_t __pos) _GLIBCXX_NOEXCEPT
222 set() _GLIBCXX_NOEXCEPT
232 set(
size_t __pos,
bool __val =
true)
234 _Base::set(__pos, __val);
240 reset() _GLIBCXX_NOEXCEPT
256 operator~()
const _GLIBCXX_NOEXCEPT
257 {
return bitset(~_M_base()); }
261 flip() _GLIBCXX_NOEXCEPT
280 operator[](
size_t __pos)
282 __glibcxx_check_subscript(__pos);
283#if __cplusplus >= 201103L
284 return _M_base()[__pos];
286 return reference(_M_base()[__pos],
this);
292 _GLIBCXX_CONSTEXPR
bool
293 operator[](
size_t __pos)
const
295#if __cplusplus < 201103L
297 __glibcxx_check_subscript(__pos);
299 return _Base::operator[](__pos);
302 using _Base::to_ulong;
303#if __cplusplus >= 201103L
304 using _Base::to_ullong;
307 template <
typename _CharT,
typename _Traits,
typename _Alloc>
311 {
return _M_base().template to_string<_CharT, _Traits, _Alloc>(); }
315 template<
class _CharT,
class _Traits,
class _Alloc>
318 to_string(_CharT __zero, _CharT __one = _CharT(
'1'))
const
320 return _M_base().template
321 to_string<_CharT, _Traits, _Alloc>(__zero, __one);
326 template<
typename _CharT,
typename _Traits>
330 {
return to_string<_CharT, _Traits, std::allocator<_CharT> >(); }
334 template<
class _CharT,
class _Traits>
337 to_string(_CharT __zero, _CharT __one = _CharT(
'1'))
const
338 {
return to_string<_CharT, _Traits,
341 template<
typename _CharT>
347 return to_string<_CharT, std::char_traits<_CharT>,
351 template<
class _CharT>
355 to_string(_CharT __zero, _CharT __one = _CharT(
'1'))
const
357 return to_string<_CharT, std::char_traits<_CharT>,
370 to_string(
char __zero,
char __one =
'1')
const
372 return to_string<char, std::char_traits<char>,
381 operator==(
const bitset<_Nb>& __rhs)
const _GLIBCXX_NOEXCEPT
382 {
return _M_base() == __rhs._M_base(); }
384#if __cpp_impl_three_way_comparison < 201907L
386 operator!=(
const bitset<_Nb>& __rhs)
const _GLIBCXX_NOEXCEPT
387 {
return _M_base() != __rhs._M_base(); }
397 operator<<(
size_t __pos)
const _GLIBCXX_NOEXCEPT
402 operator>>(
size_t __pos)
const _GLIBCXX_NOEXCEPT
407 _M_base() _GLIBCXX_NOEXCEPT
412 _M_base()
const _GLIBCXX_NOEXCEPT