Por que você não pode pegar o endereço de nullptr?

No padrão C ++ 11, eu não entendo a razão pela qual ter o endereço de nullptr não é permitido, enquanto umé permissão para obter o endereço de suas próprias instâncias std :: nullptr_t. Além do fato de que nullptr é uma palavra reservada, existe algum raciocínio designado para essa decisão?

Simplesmente porque me diverte, tentei circunavegar esta restrição com a seguinte função:

decltype(nullptr)* func(const decltype(nullptr) &nref) noexcept
{
    return const_cast<decltype(nullptr)*>(reinterpret_cast<const decltype(nullptr)*>(&nref));
}

Eu tive que usar reinterpret_cast no parâmetro porque sem ele eu estava recebendo o erro histérico:

error: invalid conversion from 'std::nullptr_t*' to 'std::nullptr_t*' [-fpermissive]

Quando eu chamo essa função passandonullptr Eu recebo um endereço diferente a cada vez. O nullptr é atribuído dinamicamente a um endereço just-in-time para comparações e tal? Ou (provavelmente mais provável) talvez o compilador esteja forçando uma cópia temporária do objeto subjacente?

É claro que nada disso é informação vital, apenas acho interessante por que essa restrição em particular foi implementada (e, subseqüentemente, por que estou vendo o comportamento que sou).

questionAnswers(4)

yourAnswerToTheQuestion