#ifndef __GBLIBCPP_MEMORY__ #define __GBLIBCPP_MEMORY__ #include #include namespace std { template constexpr enable_if_t>, T*> addressof(T& arg) noexcept { return &arg; } template constexpr enable_if_t>, T*> addressof(T& arg) noexcept { return reinterpret_cast( &const_cast( reinterpret_cast(arg) ) ); } template const T* addressof(const T&&) = delete; } // namespace std #endif