29 #ifndef _ALIGNED_BUFFER_H 
   30 #define _ALIGNED_BUFFER_H 1 
   32 #pragma GCC system_header 
   34 #if __cplusplus >= 201103L 
   35 # include <type_traits> 
   42   template<
typename _Tp>
 
   43     struct __aligned_buffer
 
   44     : std::aligned_storage<sizeof(_Tp), std::alignment_of<_Tp>::value>
 
   47     std::aligned_storage<sizeof(_Tp), std::alignment_of<_Tp>::value>::type
 
   53         return static_cast<void*
>(&_M_storage);
 
   57       _M_addr() const noexcept
 
   59         return static_cast<const void*
>(&_M_storage);
 
   64       { 
return static_cast<_Tp*
>(_M_addr()); }
 
   67       _M_ptr() const noexcept
 
   68       { 
return static_cast<const _Tp*
>(_M_addr()); }
 
GNU extensions for public use.