gpt4 book ai didi

c++ - std::addressof - 奇怪的实现

转载 作者:可可西里 更新时间:2023-11-01 16:38:43 27 4
gpt4 key购买 nike

所以几天前我了解了 std::addressof。在 http://en.cppreference.com/w/cpp/memory/addressof给出了一个可能的实现:

template< class T >
T* addressof(T& arg)
{
return reinterpret_cast<T*>(
&const_cast<char&>(
reinterpret_cast<const volatile char&>(arg)));
}

据我所知,这可以简单地实现如下:

template<typename T>
T* addressof( T& var )
{
return &var;
}

为什么 cppreference 的人选择用 3 次转换来实现它?是否有任何我遗漏的细节可以使它们的实现更好。当您所做的一切都是强制转换时,使用 volatile 有什么意义?

最佳答案

如果它可以像您的示例中那样实现,就没有必要了。关键是它会为您提供对象的地址,即使该类型的 operator& 的地址已被重载。

关于c++ - std::addressof - 奇怪的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31682995/

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