Giriş
aligned_union ve aligned_storage bellek için kullanılacak bir tip verir. Bunu typedef gibi düşünebilir. Bu tipden bir değişken yaratırız.
sizeof ile kullanım
Şöyle yaparız.
aligned_union ve aligned_storage bellek için kullanılacak bir tip verir. Bunu typedef gibi düşünebilir. Bu tipden bir değişken yaratırız.
sizeof ile kullanım
Şöyle yaparız.
#include <iostream>
#include <type_traits>
int main()
{
using storage_type =
std::aligned_storage<sizeof(double), alignof(double)>::type;
using union_storage_type =
std::aligned_union<sizeof(double), double>::type;
storage_type storage;
union_storage_type union_storage;
std::cout << sizeof(storage_type) << '\n';
std::cout << sizeof(union_storage_type) << '\n';
std::cout << sizeof(storage) << '\n';
std::cout << sizeof(union_storage) << '\n';
std::cout << sizeof(double) << '\n';
return 0;
}
Çıktı olarak şunu alırız.8
8
8
8
8
Eğer using olmadan kullanırsak şöyle yaparız.template<typename ...Types>
struct variant
{
private:
uint8_t index;
typename std::aligned_union<Types...>::type storage;
};
Hiç yorum yok:
Yorum Gönder