std::bitset::operator[] - cppreference.com (original) (raw)

(1) (constexpr since C++11)
(2) (constexpr since C++23)

Accesses the bit at position pos.

  1. Returns the value of the bit.

  2. Returns an object of type std::bitset::reference that allows modification of the value.

If pos < size() is false, the behavior is undefined. (until C++26)
If pos < size() is false: If the implementation is hardened, a contract violation occurs. Moreover, if the contract-violation handler returns under “observe” evaluation semantic, the behavior is undefined. If the implementation is not hardened, the behavior is undefined. (since C++26)

[edit] Parameters

pos - position of the bit to return

[edit] Return value

  1. The value of the requested bit.

[edit] Exceptions

Throws nothing.

[edit] Example

#include #include #include   int main() { std::bitset<8> b1{0b00101010}; // binary literal for 42   for (std::size_t i = 0; i < b1.size(); ++i) std::cout << "b1[" << i << "]: " << b1[i] << '\n'; b1[0] = true; // modifies the first bit through bitset::reference   std::cout << "After setting bit 0, b1 holds " << b1 << '\n'; }

Output:

b1[0]: 0 b1[1]: 1 b1[2]: 0 b1[3]: 1 b1[4]: 0 b1[5]: 1 b1[6]: 0 b1[7]: 0 After setting bit 0, b1 holds 00101011

[edit] Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 11 C++98 1. the description was missing in the C++ standard2. there was only the non-const overload 1. description added2. added the const overload
LWG 907 C++98 the behavior of reading the bit at pos was equivalentto that of test(pos), but test() may throw exceptions avoids mentioning test()

[edit] See also

| | accesses specific bit (public member function) [edit] | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |