
Alex
20.02.2018
10:14:16

Alexander
20.02.2018
10:14:43

Alex Фэils?︙
20.02.2018
10:15:00
Блядский бот

Max
20.02.2018
10:15:07
/warn
Спасибо, ответил за меня

Google

xv88
20.02.2018
10:15:34
/warn

Ilia
20.02.2018
10:16:48

Sergey
20.02.2018
10:19:37
всем привет, что лучше юзать boost multi_index или положить в ключ std::pair?

Ilia
20.02.2018
10:20:03

Anatoly
20.02.2018
10:20:08

Ilia
20.02.2018
10:20:59

Sergey
20.02.2018
10:21:15
мне нужно данные в мапе хранить по двум индексам и все

Ilia
20.02.2018
10:21:36
Сделай две параллельные мапы, и всё.

Sergey
20.02.2018
10:21:55
это как?

Ilia
20.02.2018
10:22:08
boost::multiindex — это для случаев, когда нужно что-то очень сложное и универсальное.
Опиши задачу, напиши немного кода...

Google

Alexander
20.02.2018
10:23:02
а, стоп. по двум индексам, а не ключам. сорри

Sergey
20.02.2018
10:24:19
короче говоря, map<pair<int, string>, Order>. Вот и все, что нужно, пара - это уникальный ключ заказа

Дмитрий
20.02.2018
10:25:22
А с какой башни std::list не умеет в копирующее присваивание для некопируемых типов?
Ведь казалось бы именно он должен уметь без проблем.

Anatoly
20.02.2018
10:27:59

Дмитрий
20.02.2018
10:28:31

Anatoly
20.02.2018
10:29:12

Дмитрий
20.02.2018
10:29:30
Ну да
Мне казалось list изнутри ведёт себя как список, и для копирования присваиванием ему надо было бы построить новые ноды

Anatoly
20.02.2018
10:29:56
Ну да
значит все в порядке, если T не Copyable, то и std::list<T> не Copyable

Дмитрий
20.02.2018
10:30:15
И вот на это ответа нет)

Anatoly
20.02.2018
10:32:11
что за фигня?

Дмитрий
20.02.2018
10:32:40
Копируемое конструктором, но не присваиванием.
Условно говоря, пусть я храню в списке структуры с const-полем. Их можно строить сколько влезет, но не переприсваивать. Казалось бы, std::list идеально подходит хранить такие штуки, но — почему нет копирующего присваивания таких списков?

Ilia
20.02.2018
10:34:48

Дмитрий
20.02.2018
10:35:21
Ну а что ему. push_back есть, erase есть, итератор есть, мне хватает.
(С++11, в старых стандартах не работает конечно)

Google

Дмитрий
20.02.2018
10:37:06
Это же не вектор какой-то


Ilia
20.02.2018
10:44:08
А как ты такой тип вообще в лист запихал?
Что-то странно...
std::list
Template parameters
T - The type of the elements.
(until C++11)
T must meet the requirements of CopyAssignable and CopyConstructible.
(since C++11, until C++17)
The requirements that are imposed on the elements depend on the actual operations performed on the container.
Generally, it is required that element type is a complete type and meets the requirements of Erasable, but many member functions impose stricter requirements.
(since C++17)
The requirements that are imposed on the elements depend on the actual operations performed on the container.
Generally, it is required that element type meets the requirements of Erasable, but many member functions impose stricter requirements.
This container (but not its members) can be instantiated with an incomplete element type if the allocator satisfies the allocator completeness requirements.
После 11го жёсткие требования к типу элемента в общем случае расслабили, до требований указанных в конкретной операции.
А в operator = никаких требований нет. Копируй как хочешь.


Дмитрий
20.02.2018
10:44:54
Вот!
То есть надо проверить, что в стандарте нет требования CopyAssignable к T, и тогда идти пинать libstdc++?

Ilia
20.02.2018
10:45:38
Ну, так он и копирует элемент через operator =

Дмитрий
20.02.2018
10:47:14
Да воркэраунд уже написан, а полыхающий зад ещё не починен.

Ilia
20.02.2018
10:48:00
Я глядел в cppreference, в стандарте может быть по-другому. проверь

Alexander
20.02.2018
10:48:06

Дмитрий
20.02.2018
10:52:00

Berkus
20.02.2018
10:52:39
ДА?

Matwey
20.02.2018
10:57:14
ДА?
Ну этого недостаточно же.

Berkus
20.02.2018
10:58:07
Ну этого недостаточно же.
ну это лучше чем делетер для юников указывать, ща если я вспомню в какой либе видел такие врапперы, скину линк

Matwey
20.02.2018
10:58:40

Berkus
20.02.2018
10:58:56

Matwey
20.02.2018
10:59:11
Зачем мне каждый раз?

Pavel
20.02.2018
11:12:54
ёбаный пиздец
прастите

Google

Pavel
20.02.2018
11:13:00
как это майнтайнить то?
впрочем, я, может, просто не привык

Berkus
20.02.2018
11:16:00

Matwey
20.02.2018
11:17:31
А моя изначальная претензия вообще была к отсутствию готовой реализации my_deleter<...>.

Admin
ERROR: S client not available

Berkus
20.02.2018
11:19:32
Мо ло дец!

Bogdan
20.02.2018
11:20:57
есть какие-нибудь техники оптимизации темплейтов?
скажем, есть огромный темплейт, он используется в сотне translation units с одним и тем же типом (кастомный тип).
очевидно, что definition темплейта будет целиком скопирован в каждый из этой сотни TU, это увеличивает размер бинаря и время компиляции.
вопрос такой — можно как-то развернуть темплейт в одном TU и к остальным просто линковать?
и вообще, это имеет смысл?

Matwey
20.02.2018
11:21:10
Т.е. если я туда впишу все конструкторы и операторы = default, тебе станет легче?

Berkus
20.02.2018
11:22:29

Matwey
20.02.2018
11:23:17

Berkus
20.02.2018
11:23:31
ну, вот так вот

Дмитрий
20.02.2018
11:23:40

Pavel
20.02.2018
11:23:48
а почему не вот так хотябы? std::unique_ptr<c_resource, decltype(&free_resource)> h_(new_resource(), &free_resource);
зачем вот этот ад на много строк?

Matwey
20.02.2018
11:24:17
Твой вариант явно хранит переменную с указателем на функцию заданного типа. Хотя нужна не какая-то функция заданного типа, а одна вполне определенная функция.

Bogdan
20.02.2018
11:24:57

Google

Berkus
20.02.2018
11:25:21
https://github.com/berkus/libarsenal/blob/master/lib/settings_provider.cpp#L91 ну вот как-то так, а в .hpp можно написать extern template .... кажется так

Bogdan
20.02.2018
11:26:58
блин, огонь. то что нужно, спасибо

Alexander
20.02.2018
11:52:07
https://www.amazon.com/C-High-Performance-Viktor-Sehr/dp/1787120953

Berkus
20.02.2018
11:55:10

Alexander
20.02.2018
11:55:26
хорошая?
ну я вот сижу, читаю. пока что норм
позже ревью отпишу

Pavel
20.02.2018
12:44:33
@antoshkka а где можно глянуть полный список докладчиков на cppconf?

Alexander
20.02.2018
12:45:14
а вся инфа есть на cppconf.ru

Pavel
20.02.2018
12:45:57
http://cppconf.ru/talks
Тут полный список?

Alexander
20.02.2018
12:46:02
хочешь свежее - пиши Платонову

Pavel
20.02.2018
12:48:35

Alexander
20.02.2018
12:48:57
@sermp