std::bitset::test(3)

NAME
std::bitset::test - std::bitset::test

Synopsis
   bool test( std::size_t pos ) const; (constexpr since C++23)
   Returns the value of the bit at the position pos (counting from 0).
   Unlike operator[], performs a bounds check and throws std::out_of_range if pos does
   not correspond to a valid position in the bitset.

Parameters
   pos - position of the bit to return (counting from 0)

Return value
   true if the requested bit is set, false otherwise.

Exceptions
   std::out_of_range if pos does not correspond to a valid position within the bitset.

Example
// Run this code
 #include <bit>
 #include <bitset>
 #include <cassert>
 #include <iostream>
 #include <stdexcept>
 int main()
 {
     std::bitset<10> b1("1111010000");
     std::size_t idx = 0;
     while (idx < b1.size() && !b1.test(idx))
         ++idx;
     assert(static_cast<int>(idx) == std::countr_zero(b1.to_ulong()));
     if (idx < b1.size())
         std::cout << "The first set bit is at index " << idx << '\n';
     else
         std::cout << "no set bits\n";
     try
     {
         std::bitset<0B10'1001'1010> bad;
         if (bad.test(bad.size()))
             std::cout << "Expect unexpected!\n";
     }
     catch (std::out_of_range const& ex)
     {
         std::cout << "Exception: " << ex.what() << '\n';
     }
 }

Possible output:
 The first set bit is at index 4
 Exception: bitset::test: __position (which is 666) >= _Nb (which is 666)

See also
   operator[] accesses specific bit
                  (public member function)
   popcount counts the number of 1 bits in an unsigned integer
   (C++20) (function template)
   has_single_bit checks if a number is an integral power of 2
   (C++20) (function template)