| 1234567891011121314151617181920212223242526272829303132333435363738 | 
							- #ifndef __GBLIBCPP_MEMORY__
 
- #define __GBLIBCPP_MEMORY__
 
- #include <type_traits>
 
- #include <utility>
 
- namespace std {
 
- template <typename T>
 
- constexpr T* addressof(T& arg) noexcept
 
- {
 
-     return __builtin_addressof(arg);
 
- }
 
- // template <typename T>
 
- // constexpr enable_if_t<is_function_v<remove_reference_t<T>>, T*>
 
- // addressof(T& arg) noexcept
 
- // {
 
- //     return &arg;
 
- // }
 
- // template <typename T>
 
- // constexpr enable_if_t<!is_function_v<remove_reference_t<T>>, T*>
 
- // addressof(T& arg) noexcept
 
- // {
 
- //     return reinterpret_cast<T*>(
 
- //         &const_cast<char&>(
 
- //             reinterpret_cast<const volatile char&>(arg)
 
- //         )
 
- //     );
 
- // }
 
- template <typename T>
 
- const T* addressof(const T&&) = delete;
 
- } // namespace std
 
- #endif
 
 
  |