Перегрузка emplace_back для std::vectorC++

Программы на 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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