Да его невозможно знать весь. Полухин говорил что знает кресты на 8/10, Страуструп говорил что знает кресты на 7/10. Главное это удовольстве, которые мы получаем от работы с компьютерами и программами. Главное это не потерять за годы работы.
достаточно нырнуть в исходники любого класса/функции из неймспейса std и понять что на такой настоящий код за который не стыдно вы ещё не способны . а вы его даже читаете с большим трудом, а о написании подобного и речи не идет
а кто мешает размещать указатель на трейс перед __cxa_exception? аллоцировать на ALLIGN_SIZE больше и заменить не только __cxa_allocate_exception(), но и __cxa_free_exception()?
Пришел к выводу что, и у исключений, и у кодов возврата есть огромный минус, их слишком легко проигнорировать. Поэтому в функциях, в которых может пойти что-то не так, и на это нужно обратить обязательно внимание программиста, начал делать обязательный параметр типа std::function который должен передать пользователь функции. void foo(type1 param1, type2 param2, std::function); Вероятно это может не во всех случаях хорошо работать, вероятно это может не самым быстрым способом работать поэтому не подойдет для кусков кода которые должны работать сверх быстро, но это точно заставит программиста передать коллбек на функцию обработки ошибки, но если он и там поленился сделать реализацию, на этом как бы мои полномочия все, тогда на кодревью вставлю бревно, речь идет о внутренних проектах где потребители функции коллеги.
@@yan_mezhov все так. Основная цель это заставить коллег обработать ошибку при использование, и не потерять обработчик при модификации кода. Трюк работал, но приложение было совсем-совсем лайтовое по требованием производительности. Поэтому на универсальное решение не тянет, но может кому-то будет полезно, потому что это удобно с точки зрения написания кода. Функции получаются с добровольно принудительным обработчиками ошибок.
@@Ice.Rezzet а чем плохо тот же код возврата с условным [[nodiscard]], по сути как бы тоже подразумевается что надо бы и обработать, и пользователь сам дурак если таки неиспользует значение
Когда кажется что хорошо знаешь С++ - посмотри доклады товарища Полухина и самооценка сразу вернется туда где ей и положено быть :-)
Да его невозможно знать весь. Полухин говорил что знает кресты на 8/10, Страуструп говорил что знает кресты на 7/10.
Главное это удовольстве, которые мы получаем от работы с компьютерами и программами. Главное это не потерять за годы работы.
На то это и с++
достаточно нырнуть в исходники любого класса/функции из неймспейса std и понять что на такой настоящий код за который не стыдно вы ещё не способны . а вы его даже читаете с большим трудом, а о написании подобного и речи не идет
@@apivovarov2 полухин, ты? если тебе не стыдно за код, похожий на любую стл - очень жаль. опыта тебе!
@@apivovarov2ещё бы этот код в нормальном кодстайле писался. Как раз написать, придумав концепцию, намного проще, чем читать
Огонь - статья на хабре + видос. Моё почтение, господа, за годный материал.
У Антона с каждым выступлением улыбка всё шире❤
И с каждым разом всё громче и громче поздравляет с праздником доброго утра.
Такое нам интересно, спасибо большое. Всех со всеми праздниками и всех благ и успехов!
У Полухина крутые доклады конечно
Улыбающийся Константин Владимиров в аудитории это +100 к докладу :)
Такое мы смотрим. Спасибо за видео.
похоже на супер продвинутые костыли)
добротный материал
блеск как всегда….рад слышать автора boost.pfr - static reflection
а кто мешает размещать указатель на трейс перед __cxa_exception? аллоцировать на ALLIGN_SIZE больше и заменить не только __cxa_allocate_exception(), но и __cxa_free_exception()?
Полухин крут, но у меня только один вопрос: что он делает в Яндексе? :-)
Пришел к выводу что, и у исключений, и у кодов возврата есть огромный минус, их слишком легко проигнорировать. Поэтому в функциях, в которых может пойти что-то не так, и на это нужно обратить обязательно внимание программиста, начал делать обязательный параметр типа std::function который должен передать пользователь функции.
void foo(type1 param1, type2 param2, std::function);
Вероятно это может не во всех случаях хорошо работать, вероятно это может не самым быстрым способом работать поэтому не подойдет для кусков кода которые должны работать сверх быстро, но это точно заставит программиста передать коллбек на функцию обработки ошибки, но если он и там поленился сделать реализацию, на этом как бы мои полномочия все, тогда на кодревью вставлю бревно, речь идет о внутренних проектах где потребители функции коллеги.
std::function делает аллокацию дин. памяти каждый раз, но можно и fixed_function юзать
@@yan_mezhov все так. Основная цель это заставить коллег обработать ошибку при использование, и не потерять обработчик при модификации кода. Трюк работал, но приложение было совсем-совсем лайтовое по требованием производительности. Поэтому на универсальное решение не тянет, но может кому-то будет полезно, потому что это удобно с точки зрения написания кода. Функции получаются с добровольно принудительным обработчиками ошибок.
@@Ice.Rezzet а чем плохо тот же код возврата с условным [[nodiscard]], по сути как бы тоже подразумевается что надо бы и обработать, и пользователь сам дурак если таки неиспользует значение
@pkowak всем хорош, наверно вопрос вкуса, мне такой код больше нравится
void foo([](const std::string& message)
{
std::cout
После просмотра еле вылез из-под завала костылей.
маловато будет
грязные потому что память не чистят?
Ничего нового. Яндекс граждане выеживаются, как обычно. Но на практике, за такое нужно руки выдергивать.
C++ -- бесполезный язык