Перегрузка emplace_back для std::vector ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
Перегрузка emplace_back для std::vector

Сообщение Anonymous »

Я пытаюсь написать перегрузку emplace_back для класса, производного от std::vector.

Код: Выделить всё

template 
class Dummy : public std::vector {
public:
using base_type = std::vector;

Dummy() = default;
...

private:
size_; // rank of the elements of Dummy
...
}
Предположим, что T — это матрица, и размер матрицы можно получить с помощью метода size(). Я хочу быть уверенным, что когда я добавляю элемент с помощью emplace_back, новый элемент имеет тот же размер, что и уже существующие элементы.

Код: Выделить всё

  template 
T &emplace_back(Args &&...args) {

T t(std::forward(args)...);
if (!this->empty() && size(t) != size_) {
throw std::runtime_error("sizes don't match");
}
return base_type::emplace_back(std::move(t));
}
Это правильный способ сделать это?


Подробнее здесь: https://stackoverflow.com/questions/790 ... -stdvector

Вернуться в «C++»