Кажется, нет никаких правил против этого, и ошибка, которую я получаю с
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
!
Это очевидно объявлено заранее в других заголовках, но является неполным.
кажется, все в порядке с этим кодом.
#include <vector>
#include <array>
int main() {
std::vector< std::array<int,8> > output;
output.resize(8);
return 0;
}
Вы добавили #include <array>
линия?
Других решений пока нет …