- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 
                        NTSTATUS resize(size_t new_capacity)
{
    NT_ASSERT(new_capacity >= m_size);
    if constexpr (std::is_pod_v<T>) {
        T *new_array = static_cast<T*>(KReallocate(m_size, new_capacity, sizeof(T), m_array, POOL, TAG));
        if (!new_array) {
            return STATUS_NO_MEMORY;
        }
        m_capacity = new_capacity;
        m_array = new_array;
    } else {
        T *new_array = static_cast<T*>(KAllocate(new_capacity, sizeof(T), POOL, TAG));
        if (!new_array) {
            return STATUS_NO_MEMORY;
        }
         for (size_t i = 0; i < m_size; i++) {
            new (&new_array[i]) T(std::move(m_array[i]));
            m_array[i].~T();
        }
        KmdfDeallocate(m_array, TAG);
        m_capacity = new_capacity;
        m_array = new_array;
    }
    return STATUS_SUCCESS;
}
                                 
        
Гугл порезал с выдачи проприетарные сорцы (было несколько вытечек). Вот там грепать надо.
Роман, верни ссылки!