# std::bitset<N>::test

From cppreference.com
< cpp‎ | utility‎ | bitset

bool test( std::size_t pos ) const; |  | (until C++23)
constexpr bool test( std::size_t pos ) const; |  | (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 << "first set bit 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:

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

### See also

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

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/bitset/test&oldid=147964"