template <class _Tp>
struct __array_traits<_Tp, 0> {
typedef typename aligned_storage<sizeof(_Tp), alignment_of<_Tp>::value>::type
- _NonConstStorageT;
+ _NonConstStorageT[1];
typedef typename conditional<is_const<_Tp>::value, const _NonConstStorageT,
_NonConstStorageT>::type _StorageT;
-
typedef typename remove_const<_Tp>::type _NonConstTp;
+
_LIBCPP_INLINE_VISIBILITY
- static _NonConstTp* __data(_NonConstStorageT& __store) {
- _StorageT *__ptr = std::addressof(__store);
- return reinterpret_cast<_NonConstTp*>(__ptr);
+ static _NonConstTp* __data(_NonConstStorageT &__store) {
+ return reinterpret_cast<_NonConstTp*>(__store);
}
_LIBCPP_INLINE_VISIBILITY
- static const _Tp* __data(const _StorageT& __store) {
- const _StorageT *__ptr = std::addressof(__store);
- return reinterpret_cast<const _Tp*>(__ptr);
+ static const _Tp* __data(const _StorageT &__store) {
+ return reinterpret_cast<const _Tp*>(__store);
}
_LIBCPP_INLINE_VISIBILITY