This makes it possible to have fully allocation-less MeshData, with
statically defined indices and attributes. Only the final MeshData
construction needs to be done at runtime because Array is not constexpr,
but that isn't anything heavy anyway.
"Trade::MeshData: attribute"<<i<<"["<<Debug::nospace<<static_cast<constvoid*>(&attribute.data.front())<<Debug::nospace<<":"<<Debug::nospace<<static_cast<constvoid*>(&attribute.data.back()+vertexFormatSize(attribute.format))<<Debug::nospace<<"] is not contained in passed vertexData array ["<<Debug::nospace<<static_cast<constvoid*>(_vertexData.begin())<<Debug::nospace<<":"<<Debug::nospace<<static_cast<constvoid*>(_vertexData.end())<<Debug::nospace<<"]",);
"Trade::MeshData: attribute"<<i<<"["<<Debug::nospace<<static_cast<constvoid*>(&data.front())<<Debug::nospace<<":"<<Debug::nospace<<static_cast<constvoid*>(&data.back()+vertexFormatSize(attribute.format))<<Debug::nospace<<"] is not contained in passed vertexData array ["<<Debug::nospace<<static_cast<constvoid*>(_vertexData.begin())<<Debug::nospace<<":"<<Debug::nospace<<static_cast<constvoid*>(_vertexData.end())<<Debug::nospace<<"]",);
type{type},data{(CORRADE_CONSTEXPR_ASSERT(!data.empty(),"Trade::MeshIndexData: index array can't be empty, create a non-indexed mesh instead"),data)}{}