Дмитрий ⬡
Дмитрий ⬡
Ну да
Дмитрий ⬡
Мне казалось list изнутри ведёт себя как список, и для копирования присваиванием ему надо было бы построить новые ноды
Anatoly
Ну да
значит все в порядке, если T не Copyable, то и std::list<T> не Copyable
Дмитрий ⬡
Дмитрий ⬡
И вот на это ответа нет)
Anatoly
что за фигня?
Дмитрий ⬡
Копируемое конструктором, но не присваиванием.
Дмитрий ⬡
Условно говоря, пусть я храню в списке структуры с const-полем. Их можно строить сколько влезет, но не переприсваивать. Казалось бы, std::list идеально подходит хранить такие штуки, но — почему нет копирующего присваивания таких списков?
Дмитрий ⬡
Ну а что ему. push_back есть, erase есть, итератор есть, мне хватает.
Дмитрий ⬡
(С++11, в старых стандартах не работает конечно)
Дмитрий ⬡
Это же не вектор какой-то
Дмитрий ⬡
Вот!
Дмитрий ⬡
То есть надо проверить, что в стандарте нет требования CopyAssignable к T, и тогда идти пинать libstdc++?
Дмитрий ⬡
Да воркэраунд уже написан, а полыхающий зад ещё не починен.
Alexander "SonnySlave"
Berkus
Berkus
ДА?
Matwey
ДА?
Ну этого недостаточно же.
Berkus
Ну этого недостаточно же.
ну это лучше чем делетер для юников указывать, ща если я вспомню в какой либе видел такие врапперы, скину линк
Matwey
Berkus
Matwey
Зачем мне каждый раз?
Pavel
ёбаный пиздец
Pavel
прастите
Pavel
как это майнтайнить то?
Pavel
впрочем, я, может, просто не привык
Matwey
А моя изначальная претензия вообще была к отсутствию готовой реализации my_deleter<...>.
Berkus
Berkus
Мо ло дец!
B
есть какие-нибудь техники оптимизации темплейтов?
скажем, есть огромный темплейт, он используется в сотне translation units с одним и тем же типом (кастомный тип).
очевидно, что definition темплейта будет целиком скопирован в каждый из этой сотни TU, это увеличивает размер бинаря и время компиляции.
вопрос такой — можно как-то развернуть темплейт в одном TU и к остальным просто линковать?
и вообще, это имеет смысл?
Matwey
Т.е. если я туда впишу все конструкторы и операторы = default, тебе станет легче?
Berkus
Berkus
Matwey
Berkus
ну, вот так вот
Pavel
а почему не вот так хотябы? std::unique_ptr<c_resource, decltype(&free_resource)> h_(new_resource(), &free_resource);
Pavel
зачем вот этот ад на много строк?
Matwey
Matwey
Твой вариант явно хранит переменную с указателем на функцию заданного типа. Хотя нужна не какая-то функция заданного типа, а одна вполне определенная функция.
Berkus
Berkus
https://github.com/berkus/libarsenal/blob/master/lib/settings_provider.cpp#L91 ну вот как-то так, а в .hpp можно написать extern template .... кажется так
B
блин, огонь. то что нужно, спасибо
Alexander "SonnySlave"
https://www.amazon.com/C-High-Performance-Viktor-Sehr/dp/1787120953
Berkus
Alexander "SonnySlave"
хорошая?
ну я вот сижу, читаю. пока что норм
Alexander "SonnySlave"
позже ревью отпишу
Pavel
@antoshkka а где можно глянуть полный список докладчиков на cppconf?
Alexander "SonnySlave"
Alexander "SonnySlave"
а вся инфа есть на cppconf.ru
Pavel
http://cppconf.ru/talks
Тут полный список?
Alexander "SonnySlave"
хочешь свежее - пиши Платонову
Alexander "SonnySlave"
Alexander "SonnySlave"
Alexander "SonnySlave"
@sermp
Pavel
ок, спасибо
Sergey
ват?
Sergey
Sergey
ну сейчас ещё в ревью несколько
Anonymous
короче вот вам рецепт 100% обфускатора кодов на cpp:
используя #define дефайнить все элементы программы, включая системные методы, на рандомный набор арабских символов от 5 до 15
все эти дефайны записывать в отдельный скрытый файл, который потом инклудится
ShadoWalkeR
из разряда #define true false
ShadoWalkeR
Особым цинизмом будет на true дефайнить rand))))
Pavel
тянет на дарвина
🐙 Antony
горшочек не вари
Constantine
Да, в рамках обсуждения доставляю гениальный обфускатор - в многопоточной среде промежуточный буфер некоторой функции делаем статическим (у меня недавно так рабочий день умер)
Pavel
vladislav
Pavel
где вы таких берете
Constantine
Constantine
@antoshkka держите идею: в рамках синтаксиса namespace std::filesystem { } разрешить еще namespace some { namespace ::std {} }, чтобы при специализации extension point из другого namespace не нужно было закрывать этот