
babysitter
16.11.2016
05:58:34
А, это я знаю, но не задумывался почему. Просто все столько раз повторили, что само собой как-то.

Aidar
16.11.2016
05:59:06
Там он объясняет что происходит в первом и втором случае

Vladislav
16.11.2016
05:59:49
это хорошо что все знают ответ, а то мне сегодня на code review пришлось объяснять человеку разницу)

Aidar
16.11.2016
06:01:20
А разве с кучей Вик принтеров не выгоднее делать 2?

Google

babysitter
16.11.2016
06:02:11
Ну это просто очень частая вещь, на ней как-то акцентируют внимание. Вот с make_unique такого прикола само собой нету. Вот его в 11 и не засунули.

Vladislav
16.11.2016
06:02:56
да, комбинация make_shared и долгоживущего weak_pointer на него приводит к "утечке" памяти
бонусный вопрос: чем плох код f(shared_ptr<T> (new T(...)), g()), помимо производительности?

Dumitru
16.11.2016
06:13:17

Aidar
16.11.2016
06:14:58
Это я уже не вижу

Vladislav
16.11.2016
06:15:13

babysitter
16.11.2016
06:15:35
я возможно слышал у саттера ответ, но могу чушь спороть сори

Dumitru
16.11.2016
06:15:55
можно подробнее?
Ну мы не знаем что будет первым
Создание указателя или вызов g()

Vladislav
16.11.2016
06:16:06

Dumitru
16.11.2016
06:16:22

Vladislav
16.11.2016
06:16:28

Aidar
16.11.2016
06:17:08
Ну если только ты специально сайд эффекты запилишь

Google

Vladislav
16.11.2016
06:19:03

babysitter
16.11.2016
06:25:17
то есть вопрос звучит как, чем это
f(shared_ptr<T> (new T(...)), g())
хуже, чем это
f(make_shared<T> (...), g()) кроме производительности ?

Vladislav
16.11.2016
06:25:24
да

productionneuh
16.11.2016
06:32:57

Andrey
16.11.2016
06:33:02
это помимо производительности

babysitter
16.11.2016
06:37:00
то есть например делается первый хип аллокейшн new T(...)
потом выполняется g()
он кидает исключение до того как
shared_pointer<T> выполнился и мы получаем утечку?

Vladislav
16.11.2016
06:37:17

babysitter
16.11.2016
06:44:10
а если выкинуть g() например.
f(shared_ptr<T> (new T(...))
и ловлю исключение в конструкторе.
все плохо?
меня просто поплавило внезапно как новичка
по идее A a = new A() не должно давать утечку при исключении в конструкторе?

Vladislav
16.11.2016
06:49:06

babysitter
16.11.2016
06:52:22
разве что деструктор не будет вызван. если плохо написан конструктор будут проблемы

Vladislav
16.11.2016
06:53:24

babysitter
16.11.2016
06:53:52
ну или обрабатывать исключение прямо в конструкторе и передавать выше

Vladislav
16.11.2016
06:54:04
или так, да

babysitter
16.11.2016
07:00:45
https://isocpp.org/wiki/faq/exceptions#ctors-can-throw

Vladislav
16.11.2016
07:03:13
https://channel9.msdn.com/Events/GoingNative/2013/My-Favorite-Cpp-10-Liner

babysitter
16.11.2016
07:04:52
да, он там cinder пиарил на этой конференции
говорил мол затащим графику в стандарт

Google

Vladislav
16.11.2016
07:10:42

babysitter
16.11.2016
07:11:59
мне понравился его поинт про то, что на его каком-то старинном копе типа коммадора он мог всякие клевые штуки делать в текстовой консоли. цвета изменять там, размер шрифта, а плюсы этого не умеют из коробки.

Vladislav
16.11.2016
07:13:28
зачем что-то поддерживать из коробки, если можно сделать в сторонней либе? Стандарт недостаточно раздутый в текущем виде?

Kartonagnick
16.11.2016
07:43:01
консоль - собственной платформы, а не языка. а плюсы рассчитываются на множество платформ, а не на какую то одну конкретную. отсюда прямо следует, что поддержке всякого платформо-специфичного не место в стандарте
*собственность

babysitter
16.11.2016
07:43:53
и правда, зачем нам работа с файлами в стандарте, да?
файловой системой*

Vladislav
16.11.2016
07:44:35
одно дело - фундаментальные концепции, другое - украшательства

Kartonagnick
16.11.2016
07:44:44
то, что имеется по работе с файлами - очень примитивно. с++ не умеет полноценно скопировать файл, например

babysitter
16.11.2016
07:45:30
я о том, что будет в с++17. нормальная работа с файловой системой.

Дед Пегас
16.11.2016
07:45:51

babysitter
16.11.2016
07:47:05

Kartonagnick
16.11.2016
07:47:06
не заблуждайтесь, std::filesystem так же примитивна в плане функциональных возможностей

babysitter
16.11.2016
07:48:15
а работу с сетью в 17ых завезут?

Дед Пегас
16.11.2016
07:48:38
Ваще, тут некоторые упорки предлагали ваще Cairo включить в стандарт.
Привет, Саттер.

Vladislav
16.11.2016
07:49:29

Дед Пегас
16.11.2016
07:49:45
Нет, либу.

babysitter
16.11.2016
07:49:54
https://ru.wikipedia.org/wiki/Cairo

Vladislav
16.11.2016
07:51:44
а чего бы тогда туда boost всем скопом не воткнуть?)

Google

Kartonagnick
16.11.2016
07:52:30
наверное, потому что буст - полигон для испытаний. зачем втыкать не проверенные решения? а то что прошло испытание практикой - втыкают только в путь

Vladislav
16.11.2016
07:53:34
ну вот тому же mpl'ю уже больше 10 лет и он - вполне проверенное решение
просто далеко не любая либа нужна в стандарте
имхо, почти никакая не нужна

Kartonagnick
16.11.2016
07:54:21
решение должно быть не только полезным, но и практичным. что значит быть простым в изготовлении и эксплуатации (ц)Английская королева
это к слову о mpl

Дед Пегас
16.11.2016
07:56:16
Да и вон boost.hana лучше, чем mpl

Kartonagnick
16.11.2016
07:56:52
рефлексия анонсирована на с++20

Vladislav
16.11.2016
07:57:08

Admin
ERROR: S client not available

Vladislav
16.11.2016
07:58:02

babysitter
16.11.2016
07:58:08
я понимаю, что о новичках мы никогда особо не думаем, но вот приходит новый человек в плюсы и хочет удалить файл. начинает гуглить и узнает, что язык такого не умеет, дергай апи системы. хочешь перенести на свой мак с рабочей винды - пили ифдефы и переписывай кусок кода второй раз
это реально демотивирует

Kartonagnick
16.11.2016
07:58:54
remove жеж
ещё из сишного наследния
http://www.cplusplus.com/reference/cstdio/remove/

Vladislav
16.11.2016
08:00:14
по такой логике, вообще все либы должны со временем включаться в стандарт
пришел новичок, а json с xml нечем прочитать

Google

Vladislav
16.11.2016
08:01:03
демотивирует(

Alexey
16.11.2016
08:01:03
не, стоп

babysitter
16.11.2016
08:01:10

Alexey
16.11.2016
08:01:49
не все. файловая система нормальная быть должна.

Vladislav
16.11.2016
08:01:57

Kartonagnick
16.11.2016
08:02:29
Алексей, зоопарк файловых систем, вы хотели сказать)

Alexey
16.11.2016
08:02:33
тащить буст ради нормальной работы с фс кроссплатформенной, ну бесит же

Дед Пегас
16.11.2016
08:03:04
Я думаю, проблема в инфраструктуре.

Vladislav
16.11.2016
08:03:14
чтобы ответом на вопрос "как сделать x" было "подключи либо y такой-то командой", а не "подожди стандарта c++42, в котором в стандарт включат еще 10 новых библиотек"

Дед Пегас
16.11.2016
08:03:24
Тянуть буст не так уж и легко, что и демотивирует, собственно.

Kartonagnick
16.11.2016
08:03:26
Алексей, вы не поняли. std::filesystem (ну или boost::filesystem) не способны кроссплатформенно полноценно обслужить все потребности для какого нибудь файлового менеджера

Дед Пегас
16.11.2016
08:03:45
Подключай его просто в настройках проекта + инклуд и всё было бы збс.
Писали бы как в расте/хаскеле и бед не знали бы.

babysitter
16.11.2016
08:04:20
ну или хотя бы какой-нибудь менеджер пакетов
cpp install boost::filesystem

Дед Пегас
16.11.2016
08:05:04
ib4: их 100500, но всё око как-то не оч.
А всё потому что структура проекта нефиксированная.

Alexey
16.11.2016
08:05:16

Дед Пегас
16.11.2016
08:05:25
Кто во что горазд, и все юзают свои системы сборки и т.д.

Vladislav
16.11.2016
08:05:26

babysitter
16.11.2016
08:05:50
поитерировать по каталогу, да

Дед Пегас
16.11.2016
08:05:56