gpt4 book ai didi

c++ - 在没有+运算符的情况下在C++中获取内存地址

转载 作者:行者123 更新时间:2023-12-02 09:51:33 24 4
gpt4 key购买 nike

我正在为正在编写的简单容器库实现默认分配器,并且我想添加一种寻址方法,该方法可获取其工作的变量x的内存地址,并且在x重载时也可以安全使用运营商。
查看MSVC STL源代码,我发现使用了__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 为此目的

关于c++ - 在没有+运算符的情况下在C++中获取内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64293587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com