Na Referência do CPP consta que:
std::byte
é um tipo distinto que implementa o conceito de byte conforme especificado na definição da linguagem C++.Assim como char e unsigned char, ele pode ser usado para acessar a memória bruta ocupada por outros objetos ( representação de objeto ), mas ao contrário desses tipos, não é um tipo de caractere e não é um tipo aritmético. Um byte é apenas uma coleção de bits e apenas operadores bit a bit são definidos para ele .
Mas isso não é verdade: como é um tipo de enumeração, as operações de comparação ( <
, <=
, >
, >=
, ==
, !=
) também são possíveis.
Isso é intencional, por exemplo, para usar std::byte
também como uma chave para std::map
, etc.?
Sim, é intencional que
std::byte
tenha operadores de comparação. A proposta destd::byte
diz o seguinte:- P0298r3 Uma definição de tipo de byte
Como você apontou, isso permite usar
std::byte
como chaves em contêineres. Ele também permite o usostd::byte
em algoritmos comostd::partition
,std::sort
,std::unique
, etc., onde a igualdade ou comparação menor que é necessária.Observe que a seção Biblioteca de definições comuns no padrão C++ não diz muito sobre
std::byte
. Não diz que não é para ser comparável.Lembre-se de que cppreference não é normativo e pode ser editado por qualquer pessoa * sem abrir uma conta. Existem inúmeras seções que estão incompletas e erros freqüentemente aparecem no wiki. Muito provavelmente, o autor esqueceu que
std::byte
também tem operadores de comparação.* Na verdade, eu mesmo acabei de editar a página e agora ela diz: