:sizeof演算子のstd :: aligned_storageとstd ::次のコードを考えるaligned_union
#include <iostream>
#include <type_traits>
int main() {
std::aligned_storage<sizeof(double), alignof(double)> storage;
std::aligned_union<sizeof(double), double> union_storage;
std::cout << sizeof(storage) << '\n';
std::cout << sizeof(union_storage) << '\n';
std::cout << sizeof(double) << '\n';
}
を私は、彼らがdouble
を保持できるようにする必要がありますので、sizeof(storage)
とsizeof(union_storage)
が大きいかsizeof(double)
に等しくなるように期待しています。しかし、I get the output
1
1
8
打ち鳴らす-3.8とgcc-5.3の両方が、この出力を生成します。
なぜsizeof
が正しくないサイズを返すのですか?
double
をstorage
またはunion_storage
に配置するために新しい配置を使用すると、それは未定義の動作になりますか?
C++の 'aligned_storage_t'などです。 –