Тема не раскрыта, куча терминов и разбросанных понятий, все минусы на статью кидают именно потому, что весь текст статьи чистая нейронка и, заходя сюда, ожидаешь увидеть что-то свежее и интересное, но получаешь информационную кашу.
Забыл совсем про такое, но единственное - придется юзать boost, возможно не всем подойдет. Было бы хорошо, если проект изначально бы использовал boost)
Ну на самом деле в 17 такого нет, насколько мне вообще известно, но если вам важно определить - сжимаем ли объект, то вы можете это сделать через наследование (EBO)
Тут видимой была бы эффективность piecewise_construct при конструировании std::pair или std::tuple из нескольких аргументов, что бы избежать лишних промежуточных копирований и перемещений.
Так то, что бы просто показать работу if constexpr можно разделить на передачу для маленьких тривиально копируемых типов (без piecewise_construct) и для нетривиальных типов (с piecewise_construct). Для больших тривиально копируемых типов скорее всего не будет смысла делать, т.к. разница будет практически незначительной. Ну даже так отрывок кода выше будет прекрасно справляться.
1-2) вы в праве реализовать это так, как вам угодно, вы ничем не ограничены. Это лишь моя идея их реализации. 3) Это абстрактный пример, конечно, его можно подогнать под более реальную версию insert, я просто посчитал, что для демонстрации идеи этого будет достаточно.
Ещё одна нейро-статья((
Тема не раскрыта, куча терминов и разбросанных понятий, все минусы на статью кидают именно потому, что весь текст статьи чистая нейронка и, заходя сюда, ожидаешь увидеть что-то свежее и интересное, но получаешь информационную кашу.
В этой статье есть хоть слово не из нейронки?
Забыл совсем про такое, но единственное - придется юзать boost, возможно не всем подойдет. Было бы хорошо, если проект изначально бы использовал boost)
Ну на самом деле в 17 такого нет, насколько мне вообще известно, но если вам важно определить - сжимаем ли объект, то вы можете это сделать через наследование (EBO)
https://en.cppreference.com/w/cpp/language/ebo
Конечно, это вообще никак не замена, но к сожалению других способов я не знаю. Если найдете, то буду рад послушать.
4) да, я тут поглядел и фигню написал. Можно спокойно сжать до
И этого будет достаточно.
Тут видимой была бы эффективность piecewise_construct при конструировании std::pair или std::tuple из нескольких аргументов, что бы избежать лишних промежуточных копирований и перемещений.
Так то, что бы просто показать работу if constexpr можно разделить на передачу для маленьких тривиально копируемых типов (без piecewise_construct) и для нетривиальных типов (с piecewise_construct).
Для больших тривиально копируемых типов скорее всего не будет смысла делать, т.к. разница будет практически незначительной.
Ну даже так отрывок кода выше будет прекрасно справляться.
p.s. Благодарю за замечание.
1-2) вы в праве реализовать это так, как вам угодно, вы ничем не ограничены. Это лишь моя идея их реализации.
3) Это абстрактный пример, конечно, его можно подогнать под более реальную версию insert, я просто посчитал, что для демонстрации идеи этого будет достаточно.