
Dmitry
26.07.2018
06:15:45

Constantine
26.07.2018
06:22:26

Dmitry
26.07.2018
06:26:55

Constantine
26.07.2018
06:28:15

Google

Dmitry
26.07.2018
06:30:20

Constantine
26.07.2018
06:34:31

Alexey
26.07.2018
06:35:01

Constantine
26.07.2018
06:35:27

Alexey
26.07.2018
06:35:59
Я понял. Но сценарий краха каков?

Constantine
26.07.2018
06:36:33
два потока перезаписывают указатель управляющего блока и потом не тот счетчик два раза меняется

Alexey
26.07.2018
06:39:20
Но в сценарии выше было только чтение вроде
С инкрементом счетчика

Dmitry
26.07.2018
06:53:53

Timur
26.07.2018
06:54:14
То что сейчас на сайте это, грубо говоря, внутренняя (рабочая) сборка из Microsoft, а не готовый продукт, соответственно, на нее лицензия не распространяется.
Я не думаю, что там есть лицензионные ограничения на компиляцию онлайн (у них с недавних пор есть публично доступный докер контейнер с vc build tools, о каких ограничениях речь?)
Более правдивым предположением будет, что не так просто заставить vc2017 работать под Wine, с налету очевидно не получилось и он бросил, ждёт когда придут более мотивированные люди..

Constantine
26.07.2018
06:54:41

Andrey
26.07.2018
06:57:59

Timur
26.07.2018
07:00:28
Кто сейчас компилятор покупает? Берут Community edition, или просто инсталлятор (контейнер) BuildTools. Фискальных отношений тут не возникает

Google

Timur
26.07.2018
07:01:34
21 век на дворе, девопс-шмевопс, контейнеризация и облака. Майкрософт это всё уже умеет

Andrey
26.07.2018
07:07:00
То что технически build tools свободно скачиваются с сайта microsoft не значит, что вы имеете право использовать их для любых целей. Вот лицензионное соглашение https://visualstudio.microsoft.com/ru/license-terms/mlt553321/ какой его пункт разрешает делать штуки вроде gcc.godbolt.org?

Dmitry
26.07.2018
07:11:00

Constantine
26.07.2018
07:20:16

Chiveson
26.07.2018
07:59:52
А что не так с удалённой отладкой?
ну мне не хочется самому качать сорцы на виртуалку, собирать, запускать gdb-server, сейчас это делает скрипт, хочется кликать на одну кнопку в ide

Constantine
26.07.2018
08:06:44

Zodiak
26.07.2018
08:07:03
Мощно

Igor
26.07.2018
08:08:25

Antony
26.07.2018
08:21:11

Igor
26.07.2018
09:01:22

Spoonson
26.07.2018
09:02:52
Довольно странно кстати для меня, что не завезли make_shared с обычным выделением памяти, куда можно deleter запихнуть например.

Andrey
26.07.2018
09:04:41

Spoonson
26.07.2018
09:05:41

Igor
26.07.2018
09:05:43
в том что не нужно жонглировать в памяти граничными условиями "вот тут нужен строго make_shared, здесь нужен строго new + constructor, а там пофигу можно и так и эдак"?

Spoonson
26.07.2018
09:05:52
make_unique то есть

Igor
26.07.2018
09:07:11
кстати, чисто теоретически возможна такая реализация, в которой особождалась бы только та часть общей памяти, что нужна под объект, а часть под счётчики бы оставалась нетронутой? этакое if (strong_count==0) free(buffer+sizeof(bookkeping), buffer+sizeof(bookkeping)+sizeof(T))

Andrey
26.07.2018
09:07:27
Как вы себе это представляете сигнатуру make_shared принимающего еще и deleter? Неудобно же отделять параметры конструктора объекта от deleter'а.
make_unique то есть
Он появился до C++17, теперь у нас есть evaluation order guarantees и CTAD, что сильно уменьшило полезность всех этих "make_".

Igor
26.07.2018
09:10:13

Google

Andrey
26.07.2018
09:11:14

Spoonson
26.07.2018
09:11:26

Igor
26.07.2018
09:11:39
потому что это не перегрузка, а функция с отдельным именем

Max
26.07.2018
09:12:29

Andrey
26.07.2018
09:13:26

Spoonson
26.07.2018
09:13:39

Max
26.07.2018
09:13:40

Andrey
26.07.2018
09:14:22

Igor
26.07.2018
09:15:07

Max
26.07.2018
09:15:46

Andrey
26.07.2018
09:15:56
Один аргумент foo полностью вычислится перед другим. В C++17 ничего не утечет.
А как evaluation order тут помогает/мешает? Можно спокойно делать foo(std::unique_ptr<Foo>(new Foo), std::unique_ptr<Foo>(new Foo))?
И, кстати, exception-safety - если на второй аллокации вылетит bad_allock, то память утечёт.

Spoonson
26.07.2018
09:17:08

Max
26.07.2018
09:17:12

Spoonson
26.07.2018
09:22:38

Anatoly
26.07.2018
09:29:16
Видео с Cpp Russia 2018 завезли: https://www.youtube.com/watch?v=aI64OFHJDc4&list=PLZN9ZGiWZoZoFa2q0NqD6metQxavT2JYP&index=1

Igor
26.07.2018
09:30:21
так давно уже вроде, или там не всё было?

Anatoly
26.07.2018
09:32:32

Google

Spoonson
26.07.2018
09:34:56

Timothy
26.07.2018
09:48:28
привет, как избежать неявной конвертации в bool: https://ideone.com/EVGm4p
(есть вариант в комменте, но может есть другие варианты?)

Pavel
26.07.2018
09:57:45

Max
26.07.2018
09:58:03

Timothy
26.07.2018
10:01:07

Pavel
26.07.2018
10:03:47
та вот хотелось бы чтобы не писать ничего)
мне бы тоже, но вроде это в стандарте прописано, что указатели конвертируются в бул неявно (указатель на char в данном случае). я не знаю другого способа это избежать, самому интересно

Andrey
26.07.2018
10:04:49

Ilia
26.07.2018
10:05:05

Pavel
26.07.2018
10:05:57
точнее не "неправильный", а "не ожидаемый"
если убрать строку, которую предложил sm86, то в третьем случае вызовется конструктор с бул

Юра Незнанов
26.07.2018
10:08:40
https://certification.mail.ru/tests/cpp/start/
проходил кто? я - так себе, 36/45

Constantine
26.07.2018
10:09:25
ой, там регаться надо, ну нафиг

Юра Незнанов
26.07.2018
10:09:53

Ilia
26.07.2018
10:10:35

Constantine
26.07.2018
10:10:59
а нахрена мне знать создателя С++? :)

Pavel
26.07.2018
10:12:45

Google

Igor
26.07.2018
10:12:49
товарищи, а может кто-нибудь пояснить за ccache ? если у меня один набор сорцов, которые собираются в объектники в разных папках (tmp/hi3520-stable/main.o, tmp/hi3520-trunk/main.o), и я переключаюсь между ветками trunk и stable проекта - ccache должен у себя хранить разные версии объектников, или это выходит за рамки его компетенции?

Matwey
26.07.2018
10:14:45