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