16 #ifndef INCLUDE_NN_NLIB_DYNAMICALIGNEDSTORAGE_H_ 17 #define INCLUDE_NN_NLIB_DYNAMICALIGNEDSTORAGE_H_ 28 if (align == 0)
return EINVAL;
29 if ((align & (align - 1)) != 0)
return EINVAL;
30 #ifdef NN_PLATFORM_CTR 32 #elif defined(_MSC_VER) 33 void* p = _aligned_malloc(size, align);
37 if (!p)
return ENOMEM;
39 #ifdef NN_PLATFORM_CTR 45 void* tmp = rhs.storage_;
46 rhs.storage_ = storage_;
51 _aligned_free(storage_);
57 #ifndef NN_PLATFORM_CTR 60 uintptr_t pos = (
reinterpret_cast<uintptr_t
>(storage_) + (align_ - 1)) & ~(align_ - 1);
61 return reinterpret_cast<void*
>(pos);
67 #ifdef NN_PLATFORM_CTR 80 #endif // INCLUDE_NN_NLIB_DYNAMICALIGNEDSTORAGE_H_
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
~DynamicAlignedStorage() noexcept
デストラクタです。
void swap(DynamicAlignedStorage &rhs) noexcept
オブジェクトをスワップします。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
void * Get() noexcept
割り当てられた領域へのポインタを返します。
DynamicAlignedStorage() noexcept
デフォルトコンストラクタです。