babysitter
Ну это просто очень частая вещь, на ней как-то акцентируют внимание. Вот с make_unique такого прикола само собой нету. Вот его в 11 и не засунули.
Vladislav
Vladislav
да, комбинация make_shared и долгоживущего weak_pointer на него приводит к "утечке" памяти
Vladislav
бонусный вопрос: чем плох код f(shared_ptr<T> (new T(...)), g()), помимо производительности?
Dumitru
Aidar
Это я уже не вижу
babysitter
я возможно слышал у саттера ответ, но могу чушь спороть сори
Dumitru
можно подробнее?
Ну мы не знаем что будет первым
Создание указателя или вызов g()
Vladislav
Vladislav
Aidar
Ну если только ты специально сайд эффекты запилишь
babysitter
то есть вопрос звучит как, чем это
f(shared_ptr<T> (new T(...)), g())
хуже, чем это
f(make_shared<T> (...), g()) кроме производительности ?
Vladislav
да
Anonymous
Andrey
Andrey
это помимо производительности
babysitter
то есть например делается первый хип аллокейшн new T(...)
потом выполняется g()
он кидает исключение до того как
shared_pointer<T> выполнился и мы получаем утечку?
Vladislav
Vladislav
babysitter
а если выкинуть g() например.
f(shared_ptr<T> (new T(...))
и ловлю исключение в конструкторе.
все плохо?
babysitter
меня просто поплавило внезапно как новичка
по идее A a = new A() не должно давать утечку при исключении в конструкторе?
Vladislav
babysitter
разве что деструктор не будет вызван. если плохо написан конструктор будут проблемы
Vladislav
babysitter
ну или обрабатывать исключение прямо в конструкторе и передавать выше
Vladislav
или так, да
babysitter
https://isocpp.org/wiki/faq/exceptions#ctors-can-throw
Vladislav
https://channel9.msdn.com/Events/GoingNative/2013/My-Favorite-Cpp-10-Liner
babysitter
да, он там cinder пиарил на этой конференции
babysitter
говорил мол затащим графику в стандарт
Vladislav
babysitter
мне понравился его поинт про то, что на его каком-то старинном копе типа коммадора он мог всякие клевые штуки делать в текстовой консоли. цвета изменять там, размер шрифта, а плюсы этого не умеют из коробки.
Vladislav
зачем что-то поддерживать из коробки, если можно сделать в сторонней либе? Стандарт недостаточно раздутый в текущем виде?
Anonymous
консоль - собственной платформы, а не языка. а плюсы рассчитываются на множество платформ, а не на какую то одну конкретную. отсюда прямо следует, что поддержке всякого платформо-специфичного не место в стандарте
Anonymous
*собственность
babysitter
и правда, зачем нам работа с файлами в стандарте, да?
babysitter
файловой системой*
Vladislav
одно дело - фундаментальные концепции, другое - украшательства
Anonymous
то, что имеется по работе с файлами - очень примитивно. с++ не умеет полноценно скопировать файл, например
babysitter
я о том, что будет в с++17. нормальная работа с файловой системой.
Крылатый
Anonymous
не заблуждайтесь, std::filesystem так же примитивна в плане функциональных возможностей
babysitter
а работу с сетью в 17ых завезут?
Крылатый
Ваще, тут некоторые упорки предлагали ваще Cairo включить в стандарт.
Крылатый
Привет, Саттер.
Vladislav
Крылатый
Нет, либу.
babysitter
https://ru.wikipedia.org/wiki/Cairo
Vladislav
а чего бы тогда туда boost всем скопом не воткнуть?)
Anonymous
наверное, потому что буст - полигон для испытаний. зачем втыкать не проверенные решения? а то что прошло испытание практикой - втыкают только в путь
Vladislav
ну вот тому же mpl'ю уже больше 10 лет и он - вполне проверенное решение
Vladislav
просто далеко не любая либа нужна в стандарте
Vladislav
имхо, почти никакая не нужна
Anonymous
решение должно быть не только полезным, но и практичным. что значит быть простым в изготовлении и эксплуатации (ц)Английская королева
Anonymous
это к слову о mpl
Крылатый
Крылатый
Да и вон boost.hana лучше, чем mpl
Anonymous
рефлексия анонсирована на с++20
Vladislav
babysitter
я понимаю, что о новичках мы никогда особо не думаем, но вот приходит новый человек в плюсы и хочет удалить файл. начинает гуглить и узнает, что язык такого не умеет, дергай апи системы. хочешь перенести на свой мак с рабочей винды - пили ифдефы и переписывай кусок кода второй раз
babysitter
это реально демотивирует
Anonymous
remove жеж
Anonymous
ещё из сишного наследния
Anonymous
http://www.cplusplus.com/reference/cstdio/remove/
Vladislav
Vladislav
по такой логике, вообще все либы должны со временем включаться в стандарт
Vladislav
пришел новичок, а json с xml нечем прочитать
Vladislav
демотивирует(
Alexey
не, стоп
babysitter
Alexey
не все. файловая система нормальная быть должна.
Anonymous
Алексей, зоопарк файловых систем, вы хотели сказать)
Alexey
тащить буст ради нормальной работы с фс кроссплатформенной, ну бесит же