Writing to an object of non-trivially copyable type ‘struct Vertex’; use copy-assignment or copy-initialization instead

Рефакторю чужой проект. Уже почти всё сделал, но выдаётся предупреждение:

struct Vertex
{
	vec3  Position;
	vec3  Normal;
	vec2  TexCoord;
	int   SrcTextures[2];
	float TextWeight;
};

void Volume::CopyTris(Vertex* buffer, int depth)
{
	if (!depth)
	{
		// Always do 5 tris
		int vs = sizeof(Vertex);
		memcpy(buffer + StartIndex, Verts, vs * 15);
	}
	else
	{
		if (Children[0]) // does this have children?
		{
			for (int i = 8; i--;)
			{
				Children[i]->CopyTris(buffer, depth - 1);
			}
		}
	}
}
user@vm:~/projects/terrasculpt$ make
g++ -o ./bin/terrasculpt -g -Wall -L/usr/local/lib -I/usr/share/include -I/usr/local/libpng/include ./src/*.cpp -lGLEW -lglut -lX11 -lGL -lGLU -lpng -lstdc++
./src/Volume.cpp: In member function ‘void Volume::CopyTris(Vertex*, int)’:
./src/Volume.cpp:429:45: warning: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of non-trivially copyable type ‘struct Vertex’; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
  429 |   memcpy(buffer + StartIndex, Verts, vs * 15);
      |                                             ^
In file included from ./src/Volume.cpp:1:
./src/Volume.h:16:8: note: ‘struct Vertex’ declared here
   16 | struct Vertex
      |        ^~~~~~

Собираю в линуксе, так как на винде это собрать невозможно (используются очень древние библиотеки, которые есть только в линуксе). Собственно, по-этому и рефакторю - чтобы на винде собралось.
Если я правильно понял, он не знает как правильно копировать эту структуру. Нужен конструктор копирования или что-то ещё. А как в данном случае создать такой конструктор или что ещё можно сделать?
Программа-то работает, просто от ворнинга хочется избавиться :man_shrugging:

memcpy вообще ничего не знает, он просто копирует указанные байты.
По идее тут стандартом не гарантировано, что оно будет везде и всегда работать. В идеале надо выкинуть memcpy и копировать другими способами. Но тут похоже не так просто разобраться, непонятно что за buffer, 15 и т.д. Наверно будет работать и так.

Это размер массива

public:
	Vertex Verts[15];

Инициализация, видимо, делается где-то извне.

Это самый корявый код, который я видел. Даже я сейчас пишу лучше :grin: