АК
template<typename T, size_t N> class small_vector { std::variant<std::array<T, N>, std::vector<T>> m_data; public : /*mimic container*/ };, то это нормальная идея? Или какие-то серьёзные проблемы можно встретить на пути?Size: a a a
АК
template<typename T, size_t N> class small_vector { std::variant<std::array<T, N>, std::vector<T>> m_data; public : /*mimic container*/ };, то это нормальная идея? Или какие-то серьёзные проблемы можно встретить на пути?AT
AT
АК
АК
small_vector = variant<static_vector, vector>AT
m
std::unique_ptr<T[]>?AT
static_vector можно, наверное, реализовать через std::vector с кастомным аллокатором, который содержит в себе std::aligned_storage для N элементов типа T и в конструкторе единожды делать reserve(N);, чтобы избежать аллокаций кроме единственной?AT
AN
AT
AT
AT
variant.AT
variant.АК
static_vector можно, наверное, реализовать через std::vector с кастомным аллокатором, который содержит в себе std::aligned_storage для N элементов типа T и в конструкторе единожды делать reserve(N);, чтобы избежать аллокаций кроме единственной?AT
AT
AT
AT