Это может быть что-то действительно простое, но я не могу понять, почему этот код не компилируется
#include <type_traits>
template <std::size_t Size, std::size_t Align>
void foo(std::aligned_storage_t<Size, Align>&) {}
int main() {
auto storage = std::aligned_storage_t<100, 8>{};
foo(storage);
}
(https://wandbox.org/permlink/PdBwAWVh6N9rkTE2)
Как я могу заставить это работать? И почемуне компилируется ли это?
Сценарий использования состоит в том, что foo()
представляет собой набор перегрузок для несвязанных типов, таких как aligned_storage_t
, int
, double
и т. д. И экземпляр aligned_storage_t
представляет память, которую foo()
знает, как интерпретировать и использовать.