Parece uma pergunta trivial a julgar pelo uso típico do &
operador, mas há uma garantia do padrão de que address-of-operator não pode retornar nullptr
ao tentar obter um endereço?
Parece uma pergunta trivial a julgar pelo uso típico do &
operador, mas há uma garantia do padrão de que address-of-operator não pode retornar nullptr
ao tentar obter um endereço?
Não há garantia de que
operator&
não seja possível retornarnullptr
, por exemplo, sobrecarregando este operador.Aqui está um exemplo artificial:
Demonstração
A pergunta do OP é específica para
&x
(como o OP mencionou em um comentário).Não para tipos internos e não para tipos definidos pelo usuário, se o operador
&
não estiver sobrecarregado. Caso contrário, para tipos definidos pelo usuário, você pode sobrecarregar&
o operador e então o comportamento será baseado na sua implementação deoperator&
, onde você pode retornarnullptr
também.De C++17 (8.3.1) Operadores unários [ênfase minha] :
EDITAR:
A parte abaixo serve para justificar a alegação de que o endereço do operador
&
não pode retornarnullptr
para um operando de tipo definido pelo usuário (que não tenha&
operador sobrecarregado).As referências abaixo são do C++17.
De conversões de ponteiros 7.11
De 8.10 Operadores de igualdade
É garantido que a expressão
obj1 == &obj2
será avaliada comofalse
.