Обновить
5
Сергей Елагин@SEIka69

Пользователь

3
Подписчики
Отправить сообщение

Ещё одна нейро-статья((

Тема не раскрыта, куча терминов и разбросанных понятий, все минусы на статью кидают именно потому, что весь текст статьи чистая нейронка и, заходя сюда, ожидаешь увидеть что-то свежее и интересное, но получаешь информационную кашу.

В этой статье есть хоть слово не из нейронки?

Забыл совсем про такое, но единственное - придется юзать boost, возможно не всем подойдет. Было бы хорошо, если проект изначально бы использовал boost)

Ну на самом деле в 17 такого нет, насколько мне вообще известно, но если вам важно определить - сжимаем ли объект, то вы можете это сделать через наследование (EBO)

https://en.cppreference.com/w/cpp/language/ebo

struct Empty {};

struct S : private Empty {  // EBO
    int x;
};
static_assert(sizeof(S) == sizeof(int));

Конечно, это вообще никак не замена, но к сожалению других способов я не знаю. Если найдете, то буду рад послушать.

4) да, я тут поглядел и фигню написал. Можно спокойно сжать до

template <typename K>
void insert(K&& key, Value&& value) {
    buckets.emplace_back(std::forward<K>(key), std::forward<Value>(value));
}

И этого будет достаточно.

Тут видимой была бы эффективность piecewise_construct при конструировании std::pair или std::tuple из нескольких аргументов, что бы избежать лишних промежуточных копирований и перемещений.

Так то, что бы просто показать работу if constexpr можно разделить на передачу для маленьких тривиально копируемых типов (без piecewise_construct) и для нетривиальных типов (с piecewise_construct).
Для больших тривиально копируемых типов скорее всего не будет смысла делать, т.к. разница будет практически незначительной.
Ну даже так отрывок кода выше будет прекрасно справляться.

p.s. Благодарю за замечание.

1-2) вы в праве реализовать это так, как вам угодно, вы ничем не ограничены. Это лишь моя идея их реализации.
3) Это абстрактный пример, конечно, его можно подогнать под более реальную версию insert, я просто посчитал, что для демонстрации идеи этого будет достаточно.

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность

Специализация

Бэкенд разработчик
Стажёр
От 1 ₽
Python
C++
SQL
PostgreSQL
Docker
MySQL
Nginx
Linux
Redis
Git