Существует ли стандартный контейнер, имеющий тот же общий API, что и vector<T>
, но который заполняет новые местоположения с помощью прямого построения по умолчанию?
Фон:
У меня есть тип, который запрещает копирование, но имеет конструктор по умолчанию, и я действительно хочу сделать следующее:
vector<NoCopy> bag(some_size);
// use bag[i]'s
return; // bag & contents get correctly cleaned up.
Однако это не работает, потому что vector<T>(int)
реализован в терминах конструирования по умолчаниюобъект, а затем скопировать его в каждое из новых мест.
Редактировать: Не C ++ 0xB (он же C ++ 11)