3

reinterpret_cast<unsigned int>(void*)constexprの内部では実行できないため、次のようなことを試していました。

constexpr bool is_null(void* ptr)
{
    return ptr == nullptr;
}

constexpr unsigned int get_id(void* ptr)
{
    return is_null(ptr) ? 0 : 1 + get_id(static_cast<char*>(ptr) - 1);
}

ただし、コンパイル中にエラーが発生します.ptr == nullptrがconstexprではなく、再帰呼び出しでのみ、それを削除した場合ではありません。では、可能であれば、コンパイル時に avoid*を anに変換するにはどうすればよいでしょうか?unsigned int

4

1 に答える 1