[bitset.members] (original) (raw)

22 General utilities library [utilities]

22.9 Bitsets [bitset]

22.9.2 Class template bitset [template.bitset]

22.9.2.3 Members [bitset.members]

constexpr bitset& operator&=(const bitset& rhs) noexcept;

Effects: Clears each bit in*thisfor which the corresponding bit in rhs is clear, and leaves all other bits unchanged.

constexpr bitset& operator|=(const bitset& rhs) noexcept;

Effects: Sets each bit in*thisfor which the corresponding bit in rhs is set, and leaves all other bits unchanged.

constexpr bitset& operator^=(const bitset& rhs) noexcept;

Effects: Toggles each bit in*thisfor which the corresponding bit in rhs is set, and leaves all other bits unchanged.

constexpr bitset& operator<<=(size_t pos) noexcept;

Effects: Replaces each bit at position I in*thiswith a value determined as follows:

constexpr bitset& operator>>=(size_t pos) noexcept;

Effects: Replaces each bit at position I in*thiswith a value determined as follows:

constexpr bitset operator<<(size_t pos) const noexcept;

Returns: bitset(*this) <<= pos.

constexpr bitset operator>>(size_t pos) const noexcept;

Returns: bitset(*this) >>= pos.

constexpr bitset& set() noexcept;

Effects: Sets all bits in*this.

constexpr bitset& set(size_t pos, bool val = true);

Effects: Stores a new value in the bit at position pos in*this.

If val is true, the stored value is one, otherwise it is zero.

Throws: out_of_range if pos does not correspond to a valid bit position.

constexpr bitset& reset() noexcept;

Effects: Resets all bits in*this.

constexpr bitset& reset(size_t pos);

Effects: Resets the bit at position pos in*this.

Throws: out_of_range if pos does not correspond to a valid bit position.

constexpr bitset operator~() const noexcept;

Effects: Constructs an object x of classbitsetand initializes it with*this.

constexpr bitset& flip() noexcept;

Effects: Toggles all bits in*this.

constexpr bitset& flip(size_t pos);

Effects: Toggles the bit at position pos in*this.

Throws: out_of_range if pos does not correspond to a valid bit position.

constexpr bool operator[](size_t pos) const;

Hardened preconditions: pos < size() is true.

Returns: true if the bit at position pos in *this has the value one, otherwise false.

constexpr bitset::reference operator[](size_t pos);

Hardened preconditions: pos < size() is true.

Returns: An object of typebitset​::​referencesuch that(*this)[pos] == this->test(pos), and such that(*this)[pos] = valis equivalent tothis->set(pos, val).

Remarks: For the purpose of determining the presence of a data race ([intro.multithread]), any access or update through the resulting reference potentially accesses or modifies, respectively, the entire underlying bitset.

constexpr unsigned long to_ulong() const;

Throws: overflow_error if the integral value xcorresponding to the bits in *thiscannot be represented as type unsigned long.

constexpr unsigned long long to_ullong() const;

Throws: overflow_error if the integral value xcorresponding to the bits in *thiscannot be represented as type unsigned long long.

template<class charT = char,class traits = char_traits<charT>,class Allocator = allocator<charT>> constexpr basic_string<charT, traits, Allocator> to_string(charT zero = charT('0'), charT one = charT('1')) const;

Effects: Constructs a string object of the appropriate type and initializes it to a string of length N characters.

Each character is determined by the value of its corresponding bit position in*this.

Character position N - 1 corresponds to bit position zero.

Subsequent decreasing character positions correspond to increasing bit positions.

Bit value zero becomes the character zero, bit value one becomes the characterone.

Returns: The created object.

constexpr size_t count() const noexcept;

Returns: A count of the number of bits set in*this.

constexpr size_t size() const noexcept;

constexpr bool operator==(const bitset& rhs) const noexcept;

Returns: true if the value of each bit in*thisequals the value of the corresponding bit in rhs.

constexpr bool test(size_t pos) const;

Returns: trueif the bit at position posin*thishas the value one.

Throws: out_of_range if pos does not correspond to a valid bit position.

constexpr bool all() const noexcept;

Returns: count() == size().

constexpr bool any() const noexcept;

constexpr bool none() const noexcept;