Я все еще не понимаю требований к типу, который будет использоваться с std::vector
в C ++ 11, но это может быть вызвано ошибкой компилятора (gcc 4.7.0). Этот код:
struct A {
A() : X(0) { std::cerr<<" A::A(); this="<<this<<'\n'; }
int X;
};
int main()
{
std::vector<A> a;
a.resize(4);
}
работает нормально и дает ожидаемый результат, указывая, что вызывается ctor по умолчанию (явно указанный) (а не неявный ctor копирования). Однако, если я добавлю в класс удаленную копию ctor, а именно
struct A {
A() : X(0) { std::cerr<<" A::A(); this="<<this<<'\n'; }
A(A const&) = delete;
int X;
};
gcc 4.7.0 не компилируется, но пытается использовать удаленный ctor. Это правильное поведение или ошибка? Если первое, как заставить код работать?