如何解决在没有+运算符的情况下在C ++中获取内存地址
我正在为我正在编写的简单容器库实现默认分配器,并且我想添加一种寻址方法,该方法可以获取其工作的变量 查看MSVC STL源代码,我发现使用了功能 我的实现看起来像这样:x
的内存地址,这也是x
已重载了&运算符后可以安全使用。
__builtin_addressof(your_variable)
。这是唯一的方法吗?我还发现address
方法已从C ++ 20的STL分配器中删除,但是我不知道这是否是由于未使用它,还是有一个更好的新方法。>
namespace mem_core {
template <typename T>
const T* addressof(T& argument) noexcept {
return __builtin_addressof(argument);
}
template <typename T>
const T* addressof(T&& arg) = delete;
//... more mem_core stuff
} //namespace mem_core end
template <typename T>
class allocator : public mem_core::base_allocator<T> { // refers to base_allocator interface
public:
T* address(T& value) noexcept {
return mem_core::addressof(value);
}
}
解决方法
有std::addressof
用于此目的
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。