Namespaces
Variants

std::bitset<N>::test

De es.cppreference.net
 
 
Biblioteca de utilidades
Soporte del lenguaje
Soporte de tipos (tipos básicos, RTTI)
Macros de prueba de funcionalidades de la biblioteca (C++20)
Utilidades de programa
Funciones variádicas
Soporte de corrutinas (C++20)
Soporte de contratos (C++26)
Comparación de tres vías
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilidades generales
Operadores relacionales (obsoleto en C++20)
Funciones de comparación de enteros
(C++20)(C++20)(C++20)    
(C++20)
Operaciones de intercambio y de tipo
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Tipos de vocabulario comunes
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
bool test( std::size_t pos ) const;
(constexpr desde C++23)

Devuelve el valor del bit en la posición pos (contando desde 0).

A diferencia de operator[], realiza una verificación de límites.

Parámetros

pos - posición del bit a retornar (contando desde 0)

Valor de retorno

true si el bit solicitado está establecido, false en caso contrario.

Excepciones

Lanza std::out_of_range si pos no corresponde a una posición de bit válida.

Ejemplo

#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 << "El primer bit establecido está en el índice " << idx << '\n';
    else
        std::cout << "no hay bits establecidos\n";
    try
    {
        std::bitset<0B10'1001'1010> bad;
        if (bad.test(bad.size()))
            std::cout << "¡Espera lo inesperado!\n";
    }
    catch (std::out_of_range const& ex)
    {
        std::cout << "Excepción: " << ex.what() << '\n';
    }
}

Salida posible:

El primer bit establecido está en el índice 4
Excepción: bitset::test: __position (which is 666) >= _Nb (which is 666)

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2250 C++98 el comportamiento era indefinido si pos no
corresponde a una posición de bit válida
siempre lanza una
excepción en este caso

Véase también

accede a un bit específico
(función miembro pública)
(C++20)
cuenta el número de bits 1 en un entero sin signo
(plantilla de función)
verifica si un número es una potencia entera de 2
(plantilla de función)