#define INCLUDE_STATIC_ANY
#include <any>
+#include <bit>
#include <cstddef>
#include <initializer_list>
#include <memory>
throw std::bad_any_cast();
}
+ template<std::size_t S, std::size_t Alignment = std::bit_ceil(S)>
+ struct alignas(Alignment) aligned_storage {
+ std::byte data[S];
+ };
+
// `immobile_any`
// ==============
//
// invoked when they throw.
//
template<std::size_t S>
-class immobile_any : public _any::base<immobile_any<S>,
- std::aligned_storage_t<S>> {
- using base = _any::base<immobile_any<S>, std::aligned_storage_t<S>>;
+class immobile_any : public _any::base<immobile_any<S>, aligned_storage<S>> {
+ using base = _any::base<immobile_any<S>, aligned_storage<S>>;
friend base;
- using _any::base<immobile_any<S>, std::aligned_storage_t<S>>::storage;
+ using _any::base<immobile_any<S>, aligned_storage<S>>::storage;
// Superclass requirements!
// ------------------------