std :: array как тип элемента другого стандартного контейнера?

Кажется, нет никаких правил против этого, и ошибка, которую я получаю с

std::vector< std::array<int,8> > output;
output.resize (8);

является C2036 'std::array<int,0x08> *': unknown size

что не имеет смысла. Код внутри <vector> продвигает внутренний end указатель, который используется (как и вычисленный размер расширения) в другом месте. Размер struct{int x[8];} конечно «известно».

Что тут происходит?


Хм, так как это не просто опечатка или что-то подобное, и, кажется, работает нормально, когда другие пытаются это сделать (и пример, который кто-то другой написал, работал на меня!) Я копил исходный файл, пока ничего не осталось, кроме оскорбительных утверждений, и это все еще выходит из строя. Вот весь файл. Предварительно скомпилированные заголовки отключены.

//#include <SDKDDKVer.h>

#include <vector>

int main()
{

std::vector< std::array<int,8> > output;
output.resize (16);

}

Я строю с использованием x64, релиз сборки.


Это не пропущенный #include для vector, но для array!
Это очевидно объявлено заранее в других заголовках, но является неполным.

-6

Решение

кажется, все в порядке с этим кодом.

#include <vector>
#include <array>

int main() {
std::vector< std::array<int,8> > output;
output.resize(8);
return 0;
}

Идеальный тестовый пример

Вы добавили #include <array> линия?

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]