一个人不能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,但仅在递归调用中,而不是在我删除它时。那么,如果可能的话,我如何在编译时将 a 转换为 avoid*
呢unsigned int
?