Vì vậy, một vài ngày trước, tôi đã học về std :: addressof. Tại http://en.cppreference.com/w/cpp/memory/addressof một thi thể được đưa ra:std :: addressof - thực hiện lạ
template< class T >
T* addressof(T& arg)
{
return reinterpret_cast<T*>(
&const_cast<char&>(
reinterpret_cast<const volatile char&>(arg)));
}
Theo tôi thấy điều này chỉ có thể được thực hiện như:
template<typename T>
T* addressof(T& var)
{
return &var;
}
Tại sao những kẻ ở cppreference đã chọn để thực hiện nó với 3 phôi? Có bất kỳ chi tiết nào tôi thiếu hay không đang làm cho việc triển khai của họ tốt hơn. Điểm nào trong việc sử dụng dễ bay hơi khi tất cả những gì bạn làm là cast?
Quá tải địa chỉ của nhà điều hành sẽ phá vỡ triển khai thứ hai. – SirGuy
cũng xem xét điều này: http://stackoverflow.com/questions/6494591/how-can-i-reliably-get-the-address-of-an-object/6495205#6495205 – NathanOliver