Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, Elija, Вы писали:
К>Критичным для gcc является нетривиальный деструктор у B — из-за нетривиального деструктора у queue<C>.
К>Можно упростить:
К>К>struct B {
К> B(int,int) {}
К> B(const B&) = delete;
К> ~B() {}
К>};
К>
К>и получить то же самое.
К>По всей видимости, VC просто срезал угол: выполнил copy elision.
А как это связано с инициализацией массива? Потому что, если заменить массив
B arrB[3];
на один экземпляр
B instB;
и соответственно провести инициализацию в конструкторе вместо
arrB{ {p1+1, p2+2}, {p1+3, p2+4}, {p1+5, p2+6} }
как
instB {p1+1, p2+2}
то ошибка исчезает.
Что-то я не понимаю...