Это копия, сохраненная 18 ноября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
• https://github.com/sosachbot/cppthreadhat/wiki
Ответы на вопросы:
• https://en.cppreference.com/w/
• https://www.cplusplus.com/reference/
Прошлый >>1503420 (OP)
Маня, шел бы ты нахуй со своим наследованием и полиморфизмом
в чем дикая проблема посмотреть на hh.ru твой первый вопрос?
Второй вопрос - удаленки нет. Вообще.
А на данный момент это использовать нужно или нет? В прошлом треде писали, что студия перекомпилирует чуть ли не построчно
ща удаленка только для веберов, прогающий на макакаскрипте, есть? Печаль
В смысле не пользуюсь? Я генерирую метод on_message, посмотри внимательнее
>>1507218
Тащем-та не для 3, а для 4! Профит в том, что теперь их список устанавливается лишь в одном месте, и можно добавлять новые особо не ебясь.
>>1507309
По-твоему лучше в каждом сообщении иметь метод callback, который будет знать про тип receiver_t? Это ж форвард-декларить его придётся, а так же писать в каждом сообщении код, который к сообщениям вообще не относится.
это не удаленка
Студия не перекомпилирует построчно. Крайне геморно из AST вычленять функции/классы и кешировать их объектный код (который вообще лежит весь в одном .obj для всей единицы трансляции). Самый максимум, в который я поверю, - закешировать вывод препроцессора + параметры компиляции. И то есть ограничения.
Используй без фанатизма. Если от времени компиляции начнёт припекать, подчистишь узкие места.
Чо, прям все?
Студентота на связи. Кресты начал учить год назад, как только был курс по ООП на плюсах в инсте (включал в себя все вплоть до с++14 стандарта ну и STL, разумеется). Потом был небольшой перерыв, а потом опять вернулся к плюсам.
Мне нравится язык, хоть он и сложный относительно, но есть ли смысл на него налягать? В бэкэнде везде го и джава, в вебе плюсы ВООБЩЕ отсутствуют. Стоит ли готовиться к тому, что у меня, как у крестовика, два выхода из положения: 1) Поддержка легаси-кода; 2) Сверхнизкоуровневая стезя вроде имбэддэда или микроконтроллеров, а тут надо еще будет электронику учить (я учу камплюхтер саенс, я не шарю в электронике вообще).
Открывай хх и сам смотри, чего ты как маленький то. Мне всего 22, вышки у меня нет, но даже я разобрался что к чему.
ты на протяжении третьего треда даже не хочешь писать, обрботку какого бинарного протокола пишешь..
ну не хочешь, дак и ладно..
но всегда можно глянуть референсную реализацию данного протокола..
вангую, тебя там ждет много открытий..
У меня самопальный протокол.
Сначала идёт байт количества сообщений
Потом идёт байт типа первого сообщения
Дальше в зависимости от сообщения. Всё записано в little endian.
Если нужно прочитать строку - читается сначала байт её длины(N), потом N байт самой строки.
В принципе нехитрый протокол, самый обычный можно сказать. Для передачи чисел и строк его хватает.
А, бля, там про pimpl рассказывается. Исходники Qt глянь, там всё на pimpl'е.
Используется для сохранения abi
это твой говнопротокол нахуй не нужен, а протобаф - охуенная вещь, тебе в прошлом треде уже сказали. Блядь, во-первых у тебя маня-стереотипы о протобафе, во-вторых в твоем говнопротолоке 4 недосообщения. Надо быть полным аутистом, чтобы ради этого пердежа педалить свой протокол.
Сука, плюсовик делает свой велосипед не изучив существующие опенсорс проекты, это просто КЛАССИКА нахуй. За это я и не люблю C++.
>У меня самопальный протокол.
ты проанализировал существующие решения и они тебя не устроили? так что ли?
> педалить свой протокол.
Да разве это протокол? Это просто байты, которые я передаю. Нахуй ради них что-то ставить, когда свою сериализацию можно сделать за 10 минут?
> в прошлом треде уже сказали.
Лол
По началу был json - но он слишком тяжеловесный, вот я и решил переключиться на бинарные данные.
Ну, это пока их три. Дальше будет больше.
Вообще я не вижу смысла использовать протобуф. Вот как я сейчас создаю сообщения - просто и без декларативных макросов. В принципе в такую систему можно легко запилить и протобуф, если понадобится.
>Нахуй ради них что-то ставить, когда свою сериализацию можно сделать за 10 минут?
Ты бы знал, как часто я слышал этот бред в своей работе. Я видел самописные:
- 3 либы rpс + serialization
- 2 тестовых фрейворка + моки
- бесконечное количество синхронизирующих примитивов
- yet another thread pool impl
- свои парсеры
- итераторы, контейнеры, умные указатели, контейнеры умных указателей
- строки. Однажды видел 7 разных классов строк в одном проекте
- стореджи, каждый первый хочет написать свое кеширующее random access хранилище
- Абстракции над фс
Просто иди нахуй, ок? Ты меня бесишь просто своим существованием
Ах да, забыл:
- свой веб-сервер, который начали писать в 2к17 (просто пиздец)
- свой менеджер кластера (когда был готовый mesos и еще вагон аналогов)
- своя ORM
- свой map/reduce кластер
- свой самописный мониторинг машин в кластере
- своя личная JSON и XML ЛИБА БЛЯТЬ. СУУУКАА
задетектил в тебе говноеда по rapidjson. И да, удачи тебе с клиентом не на C++, с реализацией option полей, с реализацией sync/async стриминга.
Если нужного мне функционала нет в популярных библиотеках(stl, boost, rapidjson, etc.) - я пишу его сам, потому что использовать очередную говнолибу по типу протобуфа только ради того, чтобы не изобретать велосипед - это ебанатство, потому что сам протобуф - тот ещё велосипед блять, и интегрировать его в проект не так-то просто. У меня же решение получилось элегантным и работает без макросов.
>>07643
> задетектил в тебе говноеда по rapidjson
А какие альтернативы?
ответ зависит от того, что это за протокол, бинарный, текстовый, дуплекс это или полудуплекс, на каком уровне сетевой модели он работает, насколько критичны требования к задержке сигнала, критична ли потеря данных..
>А какие альтернативы?
nlohmann json
>очередную говнолибу по типу протобуфа
>протобуф - тот ещё велосипед блять
И ты так решил, потому что ...?
>У меня же решение получилось элегантным и работает без макросов
Нет документации, нет поддержки, остальным сотрудникам надо вникать в очередной говнокод (особенно приятно будет, если ты уже уволился), нет бенчмарков, потенциальные баги, нет поддержки других языков, нет реализации 99% фич всех нормальных rpc-либ.
Ты просто наговнил очередной велосипед, которых полезен только с академической точки зрения.
> Нет документации
Она нужна для того, чтобы интегрировать либу в проект. В мой проект она уже интегрирована, и более нигде не используется. Нахуя писать к ней документацию? Да это и не либа даже, а блять вот эти вот 2 файла, хули тут документировать? По-моему названия методов говорят сами за себя.
> нет поддержки
Если что-то сломается - я сам и починю.
> остальным сотрудникам надо вникать в очередной говнокод (особенно приятно будет, если ты уже уволился)
Это не рабочий проект, а мой личный, над которым работаю я один.
> нет поддержки других языков
Поддерживаются все языки, которые умеют читать и писать байты.
> нет реализации 99% фич всех нормальных rpc-либ.
А нахуя они мне нужны? Я, блять, просто байты туда-сюда гоняю.
Я в ахуе блять с вас. Переменные тоже каким-нибудь охуительным фреймворком объявляете?
Ну, вообще, на этот проект у меня есть коммерческие цели. А обучение - это неотъемлемая часть написания кода - хоть ты пишешь свой пет-проект, хоть энтерпрайз.
Хули, бля, давайте вообще передавать WebAssembly и выполнять его на V8 вместо того, чтобы написать свой лёгкий сериализатор, который в 10 раз быстрее, меньше и понятнее.
Я сам не сторонник велосипедов, но тащить на каждый пук очередную громадную либу считаю большим говноедством, чем написание велосипедов.
В чем космический эффект от сокрытия ?
Если тебе не надо куда-то лезть, ты туда и не полезешь.
>>1507748
Ай блять перекотили уже. Перепощу
Что могут спросить на собеседовании при наличии следующей фразы в требованиях
>знаком со средствами обобщенного программирования в С++ (templates);
Впервые такую формулировку вижу. И еще, сколько обычно отвечают на резюме, и отвечают ли на него вообще если ты не проходишь?
например, variadic templates как нвидиа-кун
отвечают или нет зависит от ебанутости компании. Если ебанутые, то не отвечают
Тут в прошлом или позапрошлом треде аноно затирал, что shared_ptr в его атомарным счётчиком невьебенно тормозноё
Блядь, я вроде трезвый, а ошибся в каждом слове
>т от ебанутости ком
Пиздос, на весь город две вакансии джуна, в одной вообще пиздец какой-то требуют знание еще 3 языков, надеюсь ответят.
Алсо, могут попросить реализовать трейты там какие-то или кортеж свой на джуна, или это выше уровень? Я в принципе могу, но синтаксис забываю.
Бля, я тоже хочу в нвидию наворачивать темплейты. Заебался дрочить UI, ощущаю себя фронтэнд макакой.
>>07780
У меня же не дробилка чисел, мне лишние пару тактов вообще до пизды. Зато архитектура получается стройная и масштабируемая.
Физика у меня вообще считается js-ным движком через embedded V8, лол, но это уже отдельный разговор.
>Алсо, могут попросить реализовать трейты там какие-то или кортеж свой на джуна, или это выше уровень? Я в принципе могу, но синтаксис забываю.
Зависит от ебанутости собеседующего. Если долбоёб, то может что угодно попросить
>громадную либу
>embedded v8
Лол.
Grpc даст в релизе всего 5mb. У тебя только rapidjson в полмегабайта вышел. Чего уж говорить про embedded v8.
Ну и естественно сама либа для работы с сетью места займет. В итоге нихуя не сэкономишь и тупо напишешь половину grpc. Раз ты игру делаешь, да еще физику считаешь, то тебе стопудово придется делать стриминг, а значит ты там вообще охуеешь реализовывать это все.
>Физика у меня вообще считается js-ным движком через embedded V8, лол, но это уже отдельный разговор.
Физика. считается. js-ным. движком
ЕБААААААААААААААТЬ, СКОРУЮ СРОЧНО, ТУТ ЕБАНУТЫЙ!!!
>Бля, я тоже хочу в нвидию наворачивать темплейты. Заебался дрочить UI, ощущаю себя фронтэнд макакой.
Александреску всего прочёл?
вопрос не в том, прочитал ли ты александеску (это подразумевается), а в том насколько свободно ты те же концепции можешь использвать, но реализуя возможности современного с++.. на данный момент, к примеру, мы можем вообще отойти от использования техник функцинального программирования, в частности, рекурсивного инстанциирования, при метапрограммировании, просто заменяя эти техники новыми конструкциями языка, имеративными, но выполняющимися и (опционально) в компайл тайм
>мы можем вообще отойти от использования техник функцинального программирования
>просто заменяя эти техники новыми конструкциями языка, имеративными, но выполняющимися и (опционально) в компайл тайм
Звучит как отсутствие бенчмарков и преждевременная оптимизация. Prove me wrong
> но синтаксис забываю.
ничего страшного! как говорил сам дедушка страуструп: для языка с++ важнее семантика, а не синтаксис!
Какая-то сложная шутка
ходят слухи, шо новый шланг понимает что типа код однопоточный, и не делает для шаред пойнтера атомарный счетчик
Чтобы подключить grpc - мне надо будет переписывать весь проект, а я к этому не готов. И что он мне даст кроме того, что вместо велосипеда я буду использовать обёртку над grpc такого же размера, как и сам велосипед, а то и больше?
> Раз ты игру делаешь, да еще физику считаешь, то тебе стопудово придется делать стриминг
Что ты называешь стримингом?
>>07806
На это есть причины. В кратце - игра браузерная, поэтому физический движок должен быть на js.
>>07808
Вместо книжек я читаю stackoverflow
>И что он мне даст кроме того, что вместо велосипеда я буду использовать обёртку над grpc такого же размера, как и сам велосипед, а то и больше?
Зачем нужна обертка, если используешь grpc? И что за обертка вообще?
>Что ты называешь стримингом?
Это когда присылаешь не одно сообщение, а серию в пределах одного rpc вызова. Работает гораздо быстрее, чем посылать отдельными вызовами rpc.
>Чтобы подключить grpc - мне надо будет переписывать весь проект, а я к этому не готов
С каких пор для подключения либы надо переписывать весь проект?
> Зачем нужна обертка, если используешь grpc? И что за обертка вообще?
> С каких пор для подключения либы надо переписывать весь проект?
Чтобы либа красиво ложилась на архитектуру - для неё надо писать обёртку. Не получится же у тебя, допустим, просто так и без задней мысли заменить отрисовку с SDL на OpenGL. В SDL просто рисуешь квадрат, а в OpenGL ебёшь буфферы, биндишь шейдеры, отправляешь на видеокарту вершины и т.д.
Просто как пример
> Это когда присылаешь не одно сообщение, а серию в пределах одного rpc вызова. Работает гораздо быстрее, чем посылать отдельными вызовами rpc.
Такое у меня уже реализовано
>Такое у меня уже реализовано
пруф
>Чтобы либа красиво ложилась на архитектуру - для неё надо писать обёртку
Пустые слова. Не надо
одних практических знаний не достаточно для мастерства, нужна еще и теория
а взять ее можно только из книжек
Это тебе в вузе сказали?
Это ты спизданул, теперь ты и объясняй почему согласен с трупом страуса.
В чём космический эффект первой гифки?
Допустим, у меня есть QPushButton, QLineEdit и есть метод void Add(int N). Также есть какой-нибудь контейнер для int-ов.
Мне надо, чтобы по нажатию кнопки вызывался бы метод Add и добавлял введенное число из QLineEdit-а в контейнер. Вроде бы кажется все просто, пишешь:
connect(button, &QPushButton::clicked, this, &MyClass::Add),
но непонятно, как в этом коннекте передать само число из QLineEdit-а, чтобы оно сунулось в Add.
Как это делается то?
>connect(button, &QPushButton::clicked, this, [this](){container->push_back(button.text().toInt();});
Ай бля проебался, line.text нужно, суть ты понял.
В C++ нельзя генерировать методы без внешних утилит. То, что ты написал - это пиздец, посмотри, какой там тип в конце получается.
> [this](){container->push_back(button.text().toInt();}
Матерь Божья, это что еще за конструкция? Как она работает?
Как именно они инклюдятся? Какая последовательность сборки?
То есть просто написать connect(button, &QPushButton::clicked, this, &MyClass::Add(LineEdit.text().toInt())) я не могу, а через лямбду могу любые методы вызывать внутри коннекта?
Не, он другой. Это клион какой-нибудь.
Как ты вообще догадался залезть в c++ в 2019 году без знания лямбд? Это ж самая полезная штука после auto
Хз. У меня знания только уровня мухосранского универа, а в мухосранском универе лямбды не проходят.
Почему?
Не лезь, дебил, она тебя сожрет. Ты в душе не ебешь что это такое и какое количество матана есть там, ты головой ебанешься. Лучше парсь джейсоны дальше, если не хочешь шизуху схлопотать.
Ага, только у тебя передача батчей, а в стриминге кол-во пакетов заранее не известно - изволь ждать, пока он все отправит, при этом поддерживать health соединения, останавливать отправителя (когда у тебя приемный буфер заполнен), и запускать отправителя(когда читатель буфера все забрал). Еще не забудь пиздатенько организовать двусторонний асинхронный стрим, аутентификацию/авторизацию, реализовать быструю многопоточность, написать ебическую тучу тестов и бенчмарков и бонусом наверни flow control, load balancing, monitoring и грамотный выбор транспортного протокола.
Удачи, братан.
Пиздец короче. Когда начнёт тормозить - буду оптимизировать. Сразу это нахуй надо писать.
Спасибо алсо
>Или ты сейчас покажешь нам регексп для разбора вложенных скобок, или ты хуй и говно.
Автомат с магазинной памятью. Открытая скобка - пуш в стэк, закрытая скобка - поп из стэка. Если после попа ИКС стэк пуст - конец выражения и скобки сбалансированы, если под конец парсинга выражения стэк не пуст - есть ошибка и скобки не сбалансированы. Если не даун обоссаный, то ты поймешь концепцию + погуглишь для закрепления, дальше дело синтаксиса регекспа конкретного ЯПа.
Это не регексп, даунито.
>vs.jpg
Поясните смысл пикчи.
Если упоминание http://wg21.link/n2520 ещё понятно, но чем http://wg21.link/n2530 заслуживает такого внимания?
И почему road to success лежит мимо концептов?
Не слушай всяких "умников", парси регекспами, как все тру-пацаны.
Как что-то плохое..
У креатора статический анализ слегка по другому выделяется.
Планируем всю инфраструктуру на него переводить нашу. Пока перевели парочку проектов, о чем и будет доклад на C++ Russia Piter 2019. А так - да, всем всё нравится, всё работает. Конан щупали, оказалось проще допилить версионирование в vcpkg, чем ебаться с конаном.
Двачую, откуда у конана такая популярность - хз, говно говном.
Ты будешь доклад делать? Алсо, доклад про vcpkg - ебанный стыд, как и вообще его выбор в проектах. Вы хуево провели анализ предметной области
> Ты будешь доклад делать
Нет
> Алсо, доклад про vcpkg - ебанный стыд, как и вообще его выбор в проектах
Конечно, ведь тебе то виднее.
Во всех компаниях рано или поздно появляется задача выбрать организацию репозитория, систему сборки, настроить ci/cd. Проблемы у всех одинаковые, решения тоже. Так что да, вероятность 100%, что есть те, кому виднее.
А еще есть куча каргокультистов, которые верят в одинаковые решения, и не думают головой. То, что работает в одном месте, не факт, что заработает в другом, да и вообще не факт, что изначально и в первом месте было оптимально.
Ну и да, программному комитету конфы доклад зашел, его мнение все таки будет более авторитетно.
Обычно сперва хуячат гит, а потом после добавления нескольких либ начинается распутье: монорепо (для серьезных людей) / гит с подмодулями (для олдфагов в опенсорсе) / подтягивание исходников зависимостей билд-системой (современный подход в опенсорсе) / подтягивание бинарников зависимостей билд системой (для конченных, исключение - языки с ir) / линковка на системные либы (для ценителей поедания говна) / самописный франкенштейн из башскриптов(смаке,etc), который совмещает все вышеперечисленное (особая опция для поехавших плюсовиков-велосипедописателей)
Спасибо
>Ну и да, программному комитету конфы доклад зашел, его мнение все таки будет более авторитетно.
Ты вообще часто на конфах бываешь? 50% докладов - лютый кал, доклады ради количества, велосипеды, реклама спонсорами конфы самих себя. И всех их пропускает программный комитет.
Плюс поправка на плюсы - это говноедская среда, здесь априори большое количество велосипедистов, ретроградов и прочих городских сумашедших. Среди них я котирую небольшой процент прогрессивных чуваков из комитета, компиляторописателей, суровейших байтоебов и хайлоадщиков. Мнение прикладных манек же чаще всего многого не стоит.
Да - мама говорит мне, что я умный. А если серьезно, то это просто здравый смысл и констатация реальности. К сожалению, на конфах довольно редко попадается годнота (в силу того, что чтобы рассказать про годные фишки, фишки должны сперва появиться на свет, а это не быстро) и организаторы конференций ради бабла начинают заполнять слоты посредственным материалом. Вон на джава конфах уже несколько раз было, что Сбербанк&Со сходу выкупают 25% докладов и ставят туда мимокрокодилов с откровенным шлаком. Sad but true. И ты такой ждешь хардкорщину от Шипилева, а получаешь это.
я даже спорить не буду, что хуевые доклады есть на каждой конфе. Но, тем не менее, ЧСВ у тебя все равно перебор.
Прописывание && не помогло.
funkciya(std::function<void(void)> &&callback)
Хочу сделать так.
funkciya([obj = std::move(obj)]() {});
Просто создать такую лямбду могу, но передать - нет.
auto f = [obj = std::move(obj)]() {};
void funkciya(std::unique_ptr<std::function<void(void)>> callback);
funkciya(std::make_unique<std::function<void(void)>>([obj = std::move(obj)]() {}));
То же самое.
[obj = std::move(obj)]() mutable {};
>void funkciya(std::unique_ptr<std::function<void(void)>> callback);
void funkciya(std::unique_ptr<std::function<void(void)>>&& callback);
?
Пишу драйвера под винду, используем только инструменты от microsoft. Удобно.
если честно, я сам не понимаю.
По идее, make_unique создает rvalue, которое должно проноситьс яв move-конструктор для твоей функции. Хуйня какая-то
Сорян, я проебался. Не роботоет. 3абыл сделать тип move-only при последней проверке.
auto f_ptr = std::make_unique<std::function<void(void)>>([obj = std::move(obj)]() {});
Чел, спасибо. Эти лямбды и вправду экономят кучу времени.
https://youtu.be/I0oerm0MYQY
Переписал так, что больше не нужно. Хотя я и предпочёл бы, чтобы была такая возможность.
теория типов
Тем, что в widget идёт встроенная примитивная модель, тогда как для view ты должен реализовать свою
Сашко Фокин вырос!
Я сталкивался с похожей проблемой, память под временные переменные выделялась на уже заранее выделенную для строковых констант, из-за чего я ловил рантайм ошибку и вылет при попытке как-то эти переменные модифицировать, причем стабильно, даже после изменения/удаления этих констант.
Помогла полная пересборка проекта, ошибка ушла - попробуй сделать это же.
Вообще Qt странный какой-то у меня был. После того, как я в дизайнере и в коде удалял элемент, он не удалялся из какого-то файла вне проекта и я не мог скомпилить его. Это фича такая?
И чем вью тогда лучше в моем случае? Я смогу, например, засунуть указатель на параметр объекта в ячейку таблицы вью? И менять этот параметр напрямую без посредников?
Не слушай уёбка. Он может тормозить, если 20 потоков жонглируют ими туда-сюда (ну а тут как без атомарного счётчика?) или если 20 потоков херачат в память близко к контрольной структуре. Бывает, не повезло, наверное, то я такого в реальном коде не встречал. Можно пользовать intrusive, тогда с одной стороны памяти его прикрывает объект и вероятность того что не связанные никоим боком его тормозить будут снижаются. Но make_shared то же самое делает, так что пользуй его когда возможно (но помни про weak_ptr тогда) и будь что будет.
Можешь, конечно навернуть свой шаред без атомарного счётчика, если упорот и потом удачи в дебаге когда он таки начнёт использоваться в несколько потоков.
Основной - в том что при изменении мемберов приватной функции не надо будет перекомпилировать всё, что включает этот хедер. Вот есть у тебя какой-нибудь класс, который пользуют в половине мест проекта (не обязательно god-object, может просто какой-то глобальный список херней которые твоя программа пользует), ты в него bool добавил и привет, всё пересобирать, а в больших проектах это запросто час.
Ну и кококо типа сокрытие имплементации.
Расплата в том что ты лишний раз память выделяешь.
То есть это идельно подходит для синглтонов и рядом. То, объектов чего в проекте мало, но что весь проект включает как хедер.
cell changed разве роль не передаёт? А вообще да, быстрее написать свою модель на 50 строк, чем дрочить готовую
Когда начнёт тормозить будет поздно переходить на что-то другое.
Вообще правило, которое я познал платя кровавыми соплями - если для этого есть библиотека, пользуй её.
Если переживаешь что придётся от неё отказаться - наверни вокруг интерфейс. 1 к 10 что на ней и останешься. А с велосипедом 10 к 1 что придётся допиливать и херачить то, что уже есть в библиотеках, блжад.
>>08710
>>08712
Хорошая клоунада, посоны.
>>08711
А я вот, как макака ебаная, люблю так дебажить.
>>08733
https://bugreports.qt.io/browse/QTBUG-71965
Это именно баг, причём ему уже, блядь, год. ГОД СУКА! Всем похуй.
И в отличие от чела в этом реквесте, у меня наоборот проект не отображается без .ui файла, лол. И да — qmake скрипты билдят всё правильно, а вот cmake работают только в релизной сборке.
Люблю Qt, ахуенная вещь.
Так если у тебя есть row и column, ты же можешь в обработчике этого сигнала написать что-то вроде
[code]QString text = tableWidget->item(row,column)->text();[/code]
Про роли лучше документацию почитай, у модели есть метод data, который в зависимости от роли возвращает разные хуёвины - данные, цвет, размер и т.п. Полагаю, для установки данных это тоже работает (но я не знаю)
А, жопой читаю, у тебя проблема в том, что сигнал посылается на любой чих.
Есть вариант этого метода с ModelIndex, у него можно роль спросить
Проблем с самой записью данных то у меня нет. Проблема в том, что cellChanged испускается при любом пуке, а не только при изменении содержимого ячейки. Буквально вот нажимаешь на любую ячейку таблицы, и испускается этот сигнал.
Бля напиши лучше модель, там гайд на три минуты
Метода? Мне бы сигнал. Иначе как я буду обновлять данные в модели, по какому событию? Мне надо, чтобы я вводил значение в ячейку, нажимал Enter или просто в сторону куда нибудь мышкой, и после этого испускался бы сигнал. Наверно придется свой сигнал пилить, готового решения тут не вижу.
Модель-вью? Я вроде в начале начал с нее, но что то там не получилось у меня, а потом я нашел qtablewidget и стал его юзать, т.к. быстрее.
В модель-вью какие принципы вообще? Вот есть у меня контейнер, я могу его уже юзать, как модель, или ебаться придется?
Самое интересное, что у меня этот баг был в конце 2017 года, то есть это тянется уже долго, раз до сих пор не починили.
Везде свои косяки есть, видимо. Студия у меня дома 2017 и поддерживает прекрасно 17 стандарт, а на работе студия 2019 и половину хедеров нормально не поддерживает + асан нельзя поставить.
Нет, я анон-pl/sqlщик, установил на рабочий комп новую студию из интереса для практики в свободное время.
Они ещё в ней выкатили новую подсветку синтаксиса(и вроде как к старой не вернуться) - крайне непривычно.
Документацию
Особенно учитывая, что я цмейком собираю.
Вот, блядь, ебусь с этой хуйней 4 часа и не догадался очистить проект. Спосибо онон.
И матан, и линейная алгебра, и аналитическая геометрия, и физика, и все, что угодно даже Аллах
Если ты не матаношизик, то в геймдев лучше не соваться.
Молитву какую-нибудь
Смотря геймдев каких именно игр подразумевается.
Если у него цель писать убийцу Кризиса, то да, без глубокого (как впадина мамки хейтера крестов) матана здесь никуда. Но если ориентироваться на какую-нибудь хуйню по типу карточных игр и квестов, то там его немногим больше, чем в разработке обычного софта
Браток, почитай про темплейты, прежде, чем комментировать код, который их использует.
Проблема в вижуал студио. Ей не рекомендуется пользоваться, если только насильно не заставляют
Что тогда?
Самое смешное, что я когда то давно испольщовал все эти функции. Почему оно отвалилось)))
Что угодно. Если есть выбор, я бы порекомендовал sublime text или clion + cmake ninja + clang
Охуенные советы
Самая удобная на данный момент IDE для плюсов - это QtCreator. Ни эклипс, ни CLion, ни, прости г-споди, sublime text не подходят для комфортной и быстрой разработки.
Хорошо всё с рефакторингом. Если ты о чём-то конкретном - то уточни.
Эксперты, хватит сраться, подскажите. Сейчас стоит clion с mingw, хочу сделать простенькую читалку манги на qt, с интерфейсом как у родных приложений винды, то есть uwp
Почему если тело содержит что-то отличное от одного return-statement-a, (даже если он есть, но присутствуют еще какие-либо другие стейтменты) инферится именно void? Почему бы компилеру даже при наличии нескольких стейтментов не выводить тип из return-a так же (и только в случае его отсутствия делать void)?
Мне вот кажется, что указывать возвращаемый тип стоит всегда, если это не void.
Еще как актуален, в моей конторе 15 век, и все только 11 используют.
Как бы там не было, вывод работает и в 11, видать Липмап опять обосрался
Лолблядь, мб потому, что кресты - компилируемый язык (все компилируется в бинарник, который представляет собой нули и единицы, которые неподсредственно может исполнять процессор), а пиздон - интерпретируемый, налету вся программа интерпретирует твой говнокод в нули и единицы и скармливает процу, снимая налету хуеву тучу абстракций, тратя на это дохуя времени.
Нет, в 11 работает.
Также как и дефолтные агрументы
Я специально загрузил линукс и написал g++ -std=c++11
Как его тогда в яндексе используют? Там же нужно что бы все быстро работало, что бы люди не ждали поиска по несколько секунд
Его используют в тех программных компонентах, где скорость не особо нужна, это же очевидно.
Нужен быстрый скриптовый язык - используй nodejs или luascript. Питон быстрый только со специализированными библиотеками вроде NumPy и строго для определенных задач.
>с интерфейсом как у родных приложений винды, то есть uwp
Ты такой интерфейс быстрее на QtQuick сделаешь. Тем более, что Qt под UWP именно это и делает, эмулирует отрисовку UWP через свои средства.
Ага, как там у него с шаблонными параметрами, а?
Стоит только написать template<typename T> и всё, идёшь нахуй и пишешь код в обычно блокноте
А что нет? Сырые указатели? Кстати у нас, почтенных крестовиков, гомофобия не приветствуется.
В смысле аналитически получать первообразные произвольных функций? Ты в курсе вообще, что от большинства функций интеграл в элементарных функциях не выражается?
кутяхкриейтор не только же с кумейком используют нигер
https://www.youtube.com/watch?v=NcTEaRB_cak
Да
выравнивание
False sharing
Че за детский сад, так любой auto completer может. Я-то думал, в студии можно атрибуты какие-то навесить. Мде
Очевидно, те, что на кланге работают, также в эклипсе, помню, это работало, в clion есть
2. С точки зрения баланса между производительностью и читаемостью что лучше:
void c(Vector &&arg) {
...
}
void b(Vector &arg) {
c(std::move(arg));
arg.clear();
}
void a() {
Vector v;
b(v);
}
ИЛИ
void c(Vector &&arg) {
// ...
}
void b(Vector &&arg) {
g(std::move(arg));
}
void a() {
Vector v;
b(std::move(v));
v.clear()
}
?
2. С точки зрения баланса между производительностью и читаемостью что лучше:
void c(Vector &&arg) {
...
}
void b(Vector &arg) {
c(std::move(arg));
arg.clear();
}
void a() {
Vector v;
b(v);
}
ИЛИ
void c(Vector &&arg) {
// ...
}
void b(Vector &&arg) {
g(std::move(arg));
}
void a() {
Vector v;
b(std::move(v));
v.clear()
}
?
>2. С точки зрения баланса между производительностью и читаемостью что лучше:
Лучше, когда есть бенчмарк и ты не страдаешь преждевременной оптимизацией. Читабельность важнее
имхо, std::move нужно пользоваться с крайней осторожностью, по сути своей, это грязненький хак, прячущий под собой прямое приведение типа
вот когда ты в коде видишь каст, ты настораживаешься, а тут вроде как функция и все окей.. это не так..
на самом деле std::move по настоящему нужен, наверное, для единственной цели - а именно передать дальше по цепочке вызовов r-value ссылку..
а делать так как ты делаешь - а именно передавать l-value объект через r-value ссылку (по видимому пытаясь что-то там "оптимизировать") через использование std::move, это плохой путь..
вообще, понять механизм работы (и для чего они, собственно нужны) очень легко, если заглянуть в любую из реализаций stl
там std::move используется для того чтобы передавать дальше r-value ссылку (те они "восстанавливают" ее и дальше передают)
а std::forvard используется для того чтобы передавать дальше по цепочке вызовов универсальную ссылку..
Чего бля...
У меня move-only тип, как я его еще передам-то?
Вопрос не в этом, а в том, какой из двух стульев выбрать: передача по ссылке и дальше move или два вложенных move.
Первый навскидку оптимизированнее, но не факт, что компилятор не соптимизирует вложенные move во втором случае, чтобы достичь производительности первого. Первый хуже читаем, передаешь ссылку, а внутри происходит move. Во втором сразу видно, что move.
std::forward мне не нравится как раз тем, что он скрывает, что передается.
у тебя вектор v - lvalue
при помощи std::move ты всего лишь делаешь на него r-value ссылку
это изначально неправильное решение, рано или позно приводящее к проблемам
что тут обсуждать еще? оба варианта, что у тебя - неправильные
>У меня move-only тип, как я его еще передам-то?
а, понятно
мда
то что у тебя move-only тип, никак не мешает его передавать по ссылке, r-value ссылке, по универсальной ссылке
проблемы будут при передаче по значению..
Я знаю, что делаю. При помощи std::move я вызываю move-конструктор, потому что констуктор копирования отсутствует у move-only типов. Представь, что у тебя вектор из unique_ptr.
через указатель можешь его еще передавать..
Мне нужно передать его владение внутрь вложенного метода. И есть два стула как.
>При помощи std::move я вызываю move-конструктор
move ничего не делает, кроме одного достаточно грязного каста
и все
Задроты ебаные
Сидят тут STL дизассемблят смотрят как работает чтобы понять как соптимизировать так чтобы работало на наносекунду быстрее
В то время как js-макаки хуяря пяткой говноскрипты зашибают 200к+
да, согласен, нужно заканчивать дисскуссию
// FUNCTION TEMPLATE move
template<class _Ty>
_NODISCARD constexpr remove_reference_t<_Ty>&&
move(_Ty&& _Arg) noexcept
{// forward _Arg as movable
return (static_cast<remove_reference_t<_Ty>&&>(_Arg));
}
Какой же ты зануда, и ладно ещё если бы я написал, что move вызывает что-то.
> При помощи std::move я вызываю move-конструктор
Но ведь нет, пока только ты в глаза ебёшься.
Встречает нас пикрил инсталляция, которую каждый может дополнить. В принципе прикольно
Сразу после него стоит стойка интела. Рассказывают про свои охуенные инструменты разработки и компилятор. Я не понял, чем он лучше clang’а и gcc.
Дальше - какой-то офис. По их словам - они делают клон M$ офиса. Успехов им не скатиться в говно по типу опенофиса.
Потом вот эти чуваки, про которых мы все знаем благодаря хабру, на котором лично меня они заебали своим присутствием уже довольно давно.
Эти ребята занимаются автоматической генерацией презентаций. На стойке стоит какой-то лютый омеган. Мармелад очень кислый.
Вот эта стойка мне нравится больше всего. Такая-то няша за ней сидит. Занимаются высокочастотным трейдингом и квадрокоптерами. Листочик с тестами какой-то ебейший, хуй вы его решите.
Всем известный инкредибилд, который лютейше жрёт память и цпу даже когда нихуем не занимается.
Какая-то нонейм контора. Говорят что оптимизируют эклипс, закрывают исходники и продают. Не знаю, какие дебилы на это поведутся.
Вангую, ничего. Надо было свой контейнер собирать.
Шведский стол
нет
О, я сейчас там. Набью тебе ебальник, за то что ты уже третий тред срешь своими нубскими вопросами и пропагандируешь плохие практики программирования. Тебе уже сто раз сука сказали что и как делать.
Бля, ты еще и куришь. По какой-то причине в коллективе, где есть часть плюсовиков, часть джавистов etc, курят только плюсовики
Потому что джависты - унылые пидоры.
Алсо, что делать на таких конференциях? Не лекции же слушать.
Я вообще не хожу туда, только на ютубе смотрю со скоростью 1.5 и промоткой
ну хз, джава-типчики, которых я видел, самые веселые и жизнерадостные - что на работе, что на конфах. А плюсовики чаще всего чсвшные нервные задроты, которые бегают в курилки купировать никотином баттхерт от говноcpp
И вообще не пизди. Мне сегодня позвонили, сказали что у меня хороший код и пригласили на собеседование. Вот так.
Была бы это джава конфа...
Уже 5-й день жду ответа, ничего нету от обеих компаний. Можно считать что я не прошел и начинать рассылать резюме в другие фирмы? Хоть бы написали что я не подхожу, заебался ждать уже хоть чего-то
Бля на сайтах пишут что лучше не заебывать компании, мол у них и так много работы а назойливость лишней будет. Сколько средний срок ожидания ответа на резюме? Когда можно начинать заебывать их?
Если они сказали, что свяжутся в течение N дней, N дней прошло и они не связались - то можно
Вакансия на сайте для вакансий висит, сказано
>если вы подходите под наши требования то ожидаем вашего резюме на почту
Больше ничего
Тащем та я конь
А где ты живёшь? Если на севере - могу подвезти, а ты заодно будешь рассказывать мне про охуительные практики программирования
Понятное дело не позвали, стал бы я спрашивать тут советов стоит ли идти на собес или нет. Ладно, спасибо анончики, попробую еще порассылать.
Доминирование без спецификатора virtual.
Жду тебя за гаражами хуесос
Зарепортил
3я колонка с конца - это размер члена? а если ты тян?
Первые 12 слайдов презентации просто кричат о том, что "старшие разработчики NVIDIA" поступили как заправские джуны - зашли в первые 3 ссылки в гугле, нашли красивую статистику от jetbrains и навелосипедили франкеншейна из говна и палок (а точнее из cmake и vcpkg). Погуглить академические статьи от серьезных ребят? Неее, нахуй надо, лучше почитаем срачики на reddit. Типичные плюсовики-велосипедисты.
Можете полюбоваться - https://github.com/Starl1ght/piter2019
А ты включил clang code completer? Там же их два есть - старый и новый. По крайней мере раньше было
Обосрался
В последних версиях clang code model по умолчанию включена
Снова этот косплеер жобса
-Здраствуйте, девушка, меня тут человек с анонимного форума просит взять ваши контакты
-Хуебляди не нужны
Вот тебе правда это все говно из шаблонов так нужно? Ты не мог сделать проще?
Ситуация: делаю виджет, у него есть текстовое свойство (QString). В дизайнере в редакторе свойств его можно редактировать только как "короткую строку", т.е. нету кнопочки "..." по которой открывался бы диалог с возможностью многострочного редактирования. Если переименовываю свойство в "html" (по смыслу не подходит, просто экспериментирую) -- кнопка появляется, т.е. будто дизайнер тупо делает этот диалог для какого-то фиксированного набора названий свойств. В документации ничего про это не нашёл. В исходники лезть лень, полезу только в крайнем случае (если тут никто не подскажет). Как бы заставить дизайнер давать юзеру полноценно редачить моё грёбаное свойство? Там большой текст должен быть, многострочный, вот эта фитюлька в проперти-едиторе просто не вариант.
QtCreator 4.2, Qt 5.13.
А нам норм
Так, анон, тут все серьезно.
Я запускаю на винде
gcc.exe ololo.c -o ololo.exe @includes.txt
И получаю
gcc: CreateProcess: No such file or directory
В файле includes.txt хренова гора инклюдов -I"c://some_include_path" и дефайнов, всего больше 32kb (это существенно, т.к. на винде нельзя делать командную строку больше 32кб).
Gcc внутри себя вызывает cc1.exe и все эти инклюды и дефайны передает через командную строку (это видно, если запустить с ключом -v), а не файликом.
На маке и в линуксе отрабатывает норм, а если includes.txt меньше 32кб, то норм и на винде.
Вопрос: как мне заставить gcc передавать в cc1.exe все эти параметры файликом?
Проект огромный, и не хочется переделывать гиганские мейк-файлы, искать что от чего зависит или патчить gcc.
>как мне заставить gcc передавать в cc1.exe все эти параметры файликом?
Скинь все в один большой хедер, его и заинклюдь
Ты не понимаешь, кодинг на с++ должен выглядеть круто и доставлять боль. Для этого кресты и придумали
Неосилятор\жабадебил\скриптопетух бежит из треда поддав жиденьким в штаны?
Одобряю. Нормальный герб.
Это скриптопетух, который кичится скоростью написания кода, на потом писоет @ какоет, роняя кал, когда что-то вдруг перестает работать.
Ну или так. Но с++ больше подходит
>error C2440: 'static_cast': cannot convert from 'CDefferedMessage ' to 'CBaseMessage '
>note: Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Джва часа ебался с этим говном. Предлагаю вам блеснуть знаниями и защитить честь любимого говноязыка, предположив в чём может быть дело
Если хочешь именно static_cast, надо у приводимого типа переопределить оператор T(), где T — тип, к которому приводишь, вроде так.
Мда, одебилевший уже не в состоянии восстановить B b; A a = static_cast<A *>(b) по сообщению ошибки. Я думаю ты самый тупой в этом треде
Звездочки проебались, да и похуй. И так понятно
Одно сообщение отнаследовано от другого. Причина ошибки на самом деле вообще простейшая. Хочу проверить скиловость здешних заshitников с++
А ты, видимо, самый умный в этом треде. Правильно, один из классов был объявлен до использования. В итоге получилась такая ошибка
>error C2440: 'static_cast': cannot convert from 'CDefferedMessage ' to 'CBaseMessage '
>Джва часа ебался с этим говном.
Enjoy your MSVC.
Нормальные компиляторы сообщают о том, что проблема в incomplete-типах.
>Предлагаю вам блеснуть знаниями и защитить честь любимого говноязыка
> Пользуется самым хуёвым из распространённых компиляторов
> Судит по нему о хуёвости языка
Зачем ты такой тупой?
Тем, что отделяешь код обработки иерархии от кода иерархии
Он не на шарпе пишет тащем та
> Правильно, один из классов был объявлен до использования.
Самое смешное, что ты сам же в описании своей ошибки проебался и обосрался.
Лох
Можешь ткнуть слева на Проекты а потом Настроить проект?
Впрочем если выбрать qmake, а не cmake то всё работает
https://www.ozon.ru/context/detail/id/144895863/
Хорошая книга?
И насколько вообще востребовано знание qt? Я пока только студент, глянул вакансии на hh, если и есть c++, то без упоминания qt, максимум в большом списке было бы неплохо знать...
неплохо, молодец. Осиливай С++17 Джоссутиса еще. А вообще - с точки зрения простоты поиска работы, я бы вероятно задрачивал системное программирование под луникс, а не КТ. Вакансий больше.
>И насколько вообще востребовано знание qt?
У меня в паре вакансий есть в обязательных требованиях Вакансия так и называется C++/Qt, в остальных разве что как плюс идёт. Мне лично Qt понравился тем, что можно что-то простое и полезное сделать самому, даже без опыта программирования, и гитхаб озеленить чутка. На голых плюсах хуй чё полезное сделаешь сам.
В плюсах практически всегда лучше писать всё явно, чтобы хоть как-то помочь людям читающим твой говнокод.
Посмотрел бы я на тебя, как ты явно пишешь типы в более-менее сложном коде с шаблонами, где один стейтмент и без этого занимает 100500 строчек, раздувая исходники и трудоемкость того самого чтения до размеров твоей мамаши
Может я и не прав, но в 99% случаях используется именно public наследование. Нахуя сделали по умолчанию приватное?
У класса все поля по дефолту приватные и наследование приватное.
У структуры все поля публичные по дефолту, и наследование тоже публичное
И что блять?
Ты говоришь что не сделали наследование классов по умолчанию публичным, просто чтобы дауны могли запомнить по аналогии? И пох что на практике приватное наследование не особо-то и нужно
не особо-то и используется*
std::vector std::map std::unique_ptr std::share_ptr std::less std::grater и их ещё до пизды
> пох что на практике приватное наследование не особо-то и нужно
Я вот про это и говорю. В итоге в километровых шаблонах всё равно приходится писать это злоебуче public
>И да, если ты не наследуешься приватно, это не значит, что все остальные этого тоже не делают.
Я не говорил, что я этого не делаю. Я говорил, что в большинстве случаев я видел публичное наследование и в очень редких приватное
Ебать ты упертый говноед. 1500 страниц - это архитектура компьютера + устройство ос от таненбаума. Гораздо выгоднее было потратить время, которое ты потратил на задроч плюсов, на традиционный CS. Вот ты выучил плюсы от корки до корки и сможешь пойти на вакансию 30к для джуна. А если бы знал теорию компиляторов, устройство ос, сетевой стек и простенькие c/java, то на изи попал бы интерном в гугл. Надеюсь, тебе поможет эта мудрость
Проиграл. Приватного наследования нет в 99% языков и они прекрасно живут без него. Приватное наследование - это очередная шизоидная «ГиБкОСТь))00» от страуструпа и ко. После дизайна iostreams, я считаю, мало у кого должны остаться сомнения в том, что C++ - даже рядом не стоит с качественным продумыванием своего дизайна и либ.
Отвечаю. Почитай истории о том, как студенты проходят на internship в гугл. На собесах спрашивают вот ни разу про плюсы, а гоняют по грамматикам, устройству линупса, сетям, матану и прочим серьезным вещам.
Поэтому и написал практически. Шаблоны и с decltype и auto занимают половину экрана, ясен хуй что там не стоит явно всё прописывать. Но если у тебя код на подобии
auto item = AbstractFactory().getItem();
то я бы лучше явно прописал тип, чтобы не так сложно было читать.
Кстати этого двачую, в книге по собеседованиям в гласе по плюсам задачки совсем детские, а сама автор пишет что по язык там вообще дело десятое, спросят по тому языку который знаешь, а вот по алгоритмам и дискретке ебать будут
[code lang="cpp"]
string salt = "";
for (.....)
b_salt = trip + "...";
salt += b_salt.substr(1,2);
s_test = crypt(trip.c_str(), salt.c_str());
length = strlen(s_test.c_str());
[/code]
Если поменять 2 строку в цикле assignment, вместо +=, то нещадно вылезает ошибка.
Пробовал чистить её методами, указателями etc.
Что не так с этой строкой, Анон?
бред какой
https://ideone.com/JMbc9A
Такое дело, есть класс А и внутренний класс B.
Класс А содержит указатель шаред на экземпляр B,
класс B в свою очередь содержит слабый указатель на класс A,
указатель этот передается в B прямо в конструкторе.
В имеющеся имплементации вылетает в рантайме с bad_weak_ptr.
Как нужно по уму это оформить?
Наверно в том, что он принимает участие в разработке буста и стандартов.
>Наверно в том, что он принимает участие в разработке буста и стандартов.
Если бы я делал буст и был в коммитете, я бы ссал на вас и не считал за людей
Ну давай разберем по частям, тобою написанное )) Складывается впечатление что падает в конструкторе
>ptrToB = make_shared<B>(shared_from_this());
Наверняка что-то с выделением памяти и недоступностью this, попробуй перенести эту конструкцию в отдельный метод и вызывать уже после создания экземпляра
В том что у жсомакак и прочей челяди бомбит от успешного крестобоярина. На самом деле достаточно приятный человек, в чате шутки шутит постоянно, отвечает даже студентам, в общении ничего чсвшного не заметил.
Когда классы взаимоинклудят друг друга - это значит, что надо менять архитектуру, чтобы не плодить говнокод.
Но у меня же не взаимный инклюд, у меня B является частью A, и у каждого из них есть ссылка друг на друга. Или это тоже пиздец?
Anyway, пользуясь случаем, попрошу посоветовать книжек именно об архитектуре ПО в преломлении крестов.
https://ideone.com/NxHGnm
Вынес в отдельную функцию. Но даже конструктор А не успевает выполниться, опять std::bad_weak_ptr.
За оверинжиниринг без профитов.
Если оно не работает без форвард декларейшенов - то да, это пиздец.
Кароче, вот тебе ответ https://ideone.com/wLNBXS - класс выделялся на стеке, а надо было в куче.
Советую сжечь компьютер нахуй и забыть про существование с++, потому что это реально говно говна. Это франкенштейн из говна
Чтобы использовать shared_for_this нужно, чтобы объект, у которого вызывается этот shred_for_this существовал в shared_ptr. Если делать как ты, то для этого объекта не создаётся счётчик ссылок
Как хорошо, когда есть интернет и форумы с отзывчивыми людьми. В этом случае программирование на с++ становится возможным
Нехуй пользоваться замысловатыми конструкциями, когда не понимаешь, как они работают
Я как раз написал решение в тред. И всех призываю слезать с этого говна, переходить на раст
Hахуй нам нужен твой раст, поехавший? Нужно всего лишь понимать как работает то, чем ты пользуешься и никаких проблем не будет
Во-первых, кому "нам"? Во-вторых, всё знать невозможно. И пока ты будешь ковырять баги, связанные с неочевидными сторонами языка, твои конкуренты на с++ уже запилят годноту
Макаба блять ебаный т9
В голосину
Варь, ноги-то побрей.
Это дс2 и я уже дома
На мои записи внимание не обращай, мне стало стыдно и я не стал это сдавать
Благодарю за соучастие, но это не помогло: свойства с типом QTextDocument дизайнер вовсе не отображает для редактирования.
Пришлось напердолить TaskMenuExtension, чтоб по правой кнопке была опция "Edit <blahblah>..." по которой открывается диалог с QPlainTextEdit. В принципе только выиграл, теперь можно при необходимости любую релевантную смыслу свойства фигню замутить типа как для styleSheet сделано.
Тем, что есть дауны, которые не могут отследить в коде ошибки.
Поэтому во всяких хромах ежемесячно отковыривают по 40 уязвимостей, из которых 2-3 уровня 0-day? Вот блядь дауны в гуглах работают.
Насчёт пятого, они явно хотят переполнение стека. Я в малварях не силён, но ASLR не похерит большинство попыток сделать stack smashing?
А вообще по виду всё кроме четвёртого просто. В глаза не вижу дедлока (с сигналами почти не работал, наверное, поэтому).
Чтобы избежать false sharing.
ЕМНИП в https://geidav.wordpress.com/2016/03/12/important-properties-of-spinlocks/ в серии статей про спинлоки многое расписано.
Чтобы только одна атомик переменная могла быть вытащена в кэш?
Ну, чтобы процессор мог в один момент использовать только одну?
я ньюфаг довен, это только предположение
7 не правильно вроде. Выделение памяти в обоих случаях будет только 1. Во втором случае может быть косяк с тем, что память таки утечёт, в первом же нет. Где-то в блоге pvs studio что-то такое объяснялось
>Выделение памяти в обоих случаях будет только 1
Контрольную структуру Пушкин выделит? Сначала будет сделан new int, потом выделится память со счётчиком
Ок, правда два. Но тогда в обоих случаях будет два. Во втором она тоже не вместе с new int выделится
https://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared
>std::shared_ptr<T>(new T(args...)) performs at least two allocations (one for the object T and one for the control block of the shared pointer), while std::make_shared<T> typically performs only one allocation (the standard recommends, but does not require this; all known implementations do this)
> only one allocation (the standard recommends, but does not require this;
И хули ты доказал?
>all known implementations do this
Учитывая, что это, судя по тому анону, HFT компания, их больше волнуют реальные железки и имплементации, а не эфемерные стандарты.
>кой задаче без такого __pa
А я ебу, я ж написал что нюфаг. Наверное нужно чтобы только один атомик был обновлён, а затем второй, без каких-то кешей и подобного.
Синхронизация кешей работает с минимальным объемом памяти 64 байт, который называется cache line. При использовании барьеров памяти на какие-то отдельные переменные на самом деле синхронизируется целиком cache line, в который попала переменная. Если в одном cache line оказывается 2 переменные, на которые навесили барьеры памяти, то они будут вызывать лишние синхронизации - например, когда одна переменная поменялась, а вторая - нет, ядро проца, читающее вторую переменную будет лишний раз останавливаться для вытягивания кешлайна с кеша другого ядра.
Удивительно, что плюсобляди могут такого не знать.
мимо-джавогосподин
False sharing может давать очень сильный просев по производительности.
>В глаза не вижу дедлока (с сигналами почти не работал, наверное, поэтому).
spin должен быть volatile.
Ну и в сигнал хендлере может быть какая-то приводящая к дедлоку хуйня (man signal-safety).
А то. Я привожу указатель на чар у нужнорй мне структуре и читаю прямо из неё. Это UB, ибо нарушает strict aliasing. По-хорошему нужно выделить структуру на стеке, сделать memcpy из того массива, и уже потом в локальной переменной читать.
>Насчёт пятого, они явно хотят переполнение стека. Я в малварях не силён, но ASLR не похерит большинство попыток сделать stack smashing?
Никто не требует сделать переполнение вслепую, можно посмотреть адреса сегментов во время запроса ввода. Другое дело, что в программе может быть защита канарейкой, например.
Вроде imdisk умеет даже персистить содержимое рамдиска на обычный при выключении/ребуте (шоб не копировать каждый раз проект).
Я не верю, что ты где-то вообще работаешь. Это же ты тот шизик, что сигналы пилил и прочую дрисню, спрашивал у треда как правильно реализовать, но в итоге писал по-своему? Еще и Полухина засрать успел. Пиздец ты нарцистичная завистливая чмоня.
Не ускорит, я проверял. А вот bazel ускорит
> Я в малварях не силён, но ASLR не похерит большинство попыток сделать stack smashing?
Нет, ASLR это просто рандомизация базового адреса бинарника. CFI/CFG похерит.
Нет, я свой диспетчер сообщений для веб-дрочильни пишу.
Строишь строку для переполнения с count побольше, во время запроса ввода смотришь адрес сегмента, фиксишь строку. Ну и я предполагаю, что array<char, 16> будет весь на стеке.
Щас бы плюсан кукарекал на синтаксис любого языка. По секрету: там синтаксис сделан под сильным впечатлением от плюсов.
Статья на вики data segments
Кек. Этот вырвиглазный пропорциональный шрифт для кода, судя по всему, распечатанный из ворда. Не, это жулики.
Как раз байтоебам обычно некогда возиться с форматированием.
Кроме того, ты не знаешь, через сколько рук прошло содержимое этого документа до передачи кандидату.
Вопросы как-бэ норм, говорю, как препод инфобеза в прошлом.
Варианты глобально примерно следующие:
- организовать вызов win();
- организовать вызов std::cout<< с аргументом-указателем на "win" (как из области констант, так и записанному самостоятельно);
- вообще полностью весь вывод поместить в шеллкод с системным вызовом.
А дальше вопросы - есть ли NX, ASLR, канарейка, бинарники... Возможно достаточно записать 16 байт говна, ещё 4-8 байт говна (на pop ebp/rbp), а затем адрес "win" и адрес std::cout<<. Это простейший вариант. А возможно - можно вовсе соснуть, если все символы расположены по рандомным адресам, бинарный файл для чтения не доступен и канареечка на стеке.
В принципе, если тебе интересно в этом вопросе прокачаться, могу порекомендовать годный практический курс "от простого к сложному": https://github.com/wapiflapi/exrs/tree/master/sploit
Остальные на архитектуру и ОС, все норм для байтоебства.
>Как раз байтоебам обычно некогда возиться с форматированием.
У любого программиста вытекают глаза от пропорционального шрифта. Просто на уровне ощущений.
Вопросы так себе и не понятно, зачем умение написать эксплоит нужно программисту. Мутная контора.
>препод инфобеза в прошлом.
Жулик как есть
Про эксплоит это ты сам так решил, из-за типичного пидорашьего синдрома искать сложное в простом, как с вопросами для второклашек на форумах. На деле, там базовый вопрос на понимание устройства стека, это проходится на любом курсе по безопасности программ.
Вопросы базовые для письменного скрининга кандидатов, это очевидно.
Кстати, как раз изьебства с move constructors и т.д., которые судя по всему обожают спрашивать в ваших НИИшечках, нахуй никому не упали в труъ-байтоебстве. Потому что если дело доходит до таких соображений, то пишут уже на чистом C, иногда даже без CRT.
> зачем умение написать эксплоит нужно программисту
Чтобы не ляпать код, к которому возможно написать эксплоит, очевидно же.
>>11249
>там базовый вопрос на понимание устройства стека
О, ну если сам автор вопроса интерпретирует это именно так, то в пизду такую контору. Хотя бы потому, что нет никакого "базового стека", есть разные ахритектуры, разные конвенции вызова, разные опции конпелятора, и упрощение здесь возможно только по линии конкретизации ("опишите какие примитивные операции возможны с классической структурой, именуемой стеком"). Ещё хуже, если автор вопроса сам не в курсе этого многообразия и вариативности, тогда тем более нахуй.
>>11257
Берешь и пишешь, что можно, если в этой архитектуре адрес возврата лежит на стеке, для данной программы, и описываешь решение для x86, например. Там вообще функция может заинлайниться, и что с того?
По факту твои претензии не имеют никакого значения, потому что человек, понимающий эти нюансы, все равно дойдет до интервью. Вспоминая преподство, на апелляциях к оценкам на экзамен почему-то всегда одни долбоебы, а хитровыебанные студенты все равно получают полный балл, как бы они не изьъъебывались.
Нет. В Си есть поинтер.
Жуликам все просто, потому что они пиздаболы, которым лишь бы навалить кучу говна.
Для С++ программиста достаточно было бы спросить "почему этот код плохой".
>Вспоминая преподство, на апелляциях к оценкам на экзамен почему-то всегда одни долбоебы, а хитровыебанные студенты все равно получают полный балл, как бы они не изьъъебывались.
Кто не умеет работать сам, учит работать других
Да, я в курсе, что преподаватели в РФ - дно, гной и квинтэссенция слабоумия, помноженного на самомнение.
Можно было не напоминать.
Спасибо.
>Дело в том, что твое мнение никому в хуй не уперлось, нужно уметь код писать.
Это что это за пуки такие? Типа, пришел сюда господин, чье мнение кому-то уперлось.
Человек, задавший подобный вопрос, код писать не умеет. Если ты этого не понимаешь, то ты, скорее всего, тоже. Остается рандомная хуйня в стиле "угадай хобби собеседующего". На такие фирмы не нужно идти, даже если знаешь ответ.
>Человек, задавший подобный вопрос, код писать не умеет.
Погоди с попоболью, я хочу удостовериться, что правильно тебя понял. Ты утверждаешь, что вопрос про стэк в квизе исходит от человека, не умеющего писать код? Правильно ли я тебя понял, мой юный максималист?
Еще один вопрос, кем ты работаешь сейчас? Студентота? Уровень ЧСВ?
>Дело в том, что твое мнение никому в хуй не уперлось
>я хочу удостовериться, что правильно тебя понял
Вся суть мамкиного хацкера.
Да не слушай ты этого iamverysmart-даунито, это вопрос на основы архитектуры пека.
Имеешь ввиду, что после унвиндинга стека должно остаться несколько байт, один из которых - инструкция jmp, и 8 - адрес функции, которую надо вызвать?
Я в детстве увлекался длл-инжектингом, там по похожему принципу делалось. Но это же пиздец какие дебри, нихуя не основы.
Просто подменяешь адрес возврата адресом функции, которая печатает "win". Причем там, скорее всего, лишь байт или два нужно подменить. Открой программу в отладчике и замени адрес в стеке вручную, дальше понятно будет.
Ты хочешь лямбду преобразовать к булевому типу?
А разве конпеляптор не вырежет эту функцию при оптимизации, так как она ну вызывается?
Обычно вырежет, если включена whole program optimization, или типа того, а так нет.
>>11386
>>11386
>>11370
Вы заебали уже
https://godbolt.org/z/9KJJMH
Алсо с iostreams почему-то крешится, лень разбираться.
Ну и в релизе не работает
>Алсо с iostreams почему-то крешится, лень разбираться.
Ну так ты нихуя не понял же, чего удивительного.
Годболт умеет выводить результат работы программы?
Что я не понял, маня? Я кроме одного подмена RIP и не собирался ничего делать
Fortran++ ?
Установил GCC компилятор но я не могу блять понять как заставить KDevelop его использовать, и тем более видеть std и boost либы.
Съехать с шинды. Ты ахуеешь на ней ебаться с цмейком, кедным софтом, и уже тем более, гцц. Поставь любой дистрибутив кед второй системой и не трать время на хуиту.
Дядя, ты не ебанись смотри там со своей категоричностью.
У меня на шинде проги и игрульки стоят, в которые я еще временами поигрываю + я охуею еще и в юникс вкатываться по времени.
Я не то чтобы прямо против, но не уверен что это настолько требуется, съебать на линух
Смотрел, что дальше? Все данные можно получить в динамике. ASLR это защита от школоты.
Для совсем дебилов есть cmake гуи, любой проект за 2 кнопки ресолвится и выплевывает студийный файл.
Нужно ли использовать классы QFile, QString, если пишешь на Qt? Неужели у них реализация быстрее, шустрее и молодежнее чем у стандартной либы?
Уже 4 месяца как я уволился с должности сеньора в одной из ДСных контор.
С мерзостью вспоминаю как я копал ебучий говнокод, общался с коллегами омежьими даунами с аутизмом, которые были похоже внешнее на мутации носорога и обезьяны ( Привет Антон ). Терпел тимлида велековозрастного пристарелого дауна, который был настолько омегой, что когда я увольнялся он даже сбежал со своими прихвоснями из кабинета, чтобы избежать неловкой ситуации ( Привет Костян ). Терпел всю эту скрамоскую клоунаду со ежедневными стендапами в 12:30, и прочее говно из мира айти выблядков, которых мне хотелось сжечь напалмом.
Как хорошо, что теперь я занимаюсь бизнесом и программирую только в UE4 чисто для души.
Я не понимаю нахуя вы изучаете этот ебучий с++, это же говно ебаное. Как только вы обмолвитесь, что вы программист, нормальные люди сразу будут к вам относиться с презрением.
Реал стори между прочем, я когда хожу на свидания, я никогда не говорил что я программист, иначе это сразу клеймо неудачника задрота, кем большая часть программистов анальчиков и является.
Единственное, что интересно, куда заведет язык поехавшие из стандарта С++. Они там хотели уже из С++ хаскель сделать в скором времени, только вот непонятно, нахуя это императивное говнище преврашать в такие прекрасные языки типа хаскеля получая на выходе тонну говна и мочи? Ладно кому не похуй на это? Все нормальные люди уже пишут c, python, go, js.
С++ это особый класс больных выблядков извращенцев, что-то типа анальных говнозавтров, которые любят обмазать друг друга какахами и слизывать потом все это.
Как поживаете, лошки?
Я до этого тоже удалял выделенную память через delete после выхода из функции. Как его тогда нужно было написать?
> я когда хожу на свидания, я никогда не говорил что я программист, иначе это сразу клеймо неудачника
Я никогда не старался предстать перед бабой тем, кем не являюсь. Какого хуя ты должен выстраивать свой образ под нужные ей ожидания? Как раз-таки из-за такого отношения видимо, на тебе и ставили клеймо.
>Единственное, что интересно, куда заведет язык поехавшие из стандарта С++.
Ничего хорошего из этого не выйдет. Это какой-то пиздец.
>Я никогда не старался предстать перед бабой тем, кем не являюсь. Какого хуя ты должен выстраивать свой образ под нужные ей ожидания? Как раз-таки из-за такого отношения видимо, на тебе и ставили клеймо.
Ну я просто по совместительству и музыкант и 3д артист и бизнесмен и спортсмен, мне хватало достижений чем можно похвастаться перед тян кроме программирования.
А так это просто предвзятое отношение.
Ладно, я преувеличил, я много ходил на свидания с тиндера у меня раньше развлечение такое было, да и сейчас есть, в общем бывало говорил, что программист бывало нет, но когда говорил мне говорили что-то типа - да ладно? Ты вообще не похож на программиста, они все такие знаешь задроты типа, а ты не такой.
Но я действительно себя никогда не чувствовал с моими коллегами на одной волне, хоть я и работал в 5 разных конторах.
Везде были однотипные задроты, играющие в настолки, разговаривающие только на темы айти и не понимающие иного юмора кроме шуточек про программирование. Очень хуевые и душные люди в общем.
Я же всегда тусовался больше с менеджерами, маркетингом, продажниками, вот это были люди мне по душе.
Но не суть. В общем, что я понял пописав на С++ около 10 лет?
Что это говно, в первую очередь. Что нельзя доверять С++ всяким макакам, особленно с шаблонами, а то нагородят говнища, чтобы выебнуться типа кокой я илитарий нахуярил шаблонный говнокод, ну прям александреску # 2, а тебе потом разгребать это кривое дерьмо.
Вообще С++ лучше доверить только серьезным разработчикам библиотек, а для макакенов сделать упрощенный вариант, где нельзя будет юзать шаблоны, сырые указатели и прочее, чтобы долбоебы не могли себе выстрелить в ногу.
Но всё это относится к программированию в принципе, а не только плюсам. Не знаю, чего ты сюда пошёл плакаться.
С этим согласен, просто увидел тред про плюсы решил зайти спросить как дела, а заодно и высрать свою сторис.
Пишу фп на скале и радуюсь жизни. Л
Сосу хуи.
Bitmap* image = new Bitmap(hbmScreen, nullptr);
Бтв std::equal_range вызывает std::lower_bound и std::upper_bound.
А std::find - линейный поиск, тогда как алгоритмы выше - бинарный поиск.
Но мы передадим комитету, что ты сказал, что нахуй не нужно, а то они так и не додумаются сами.
Вообще, мне кажется, ты просто видел одну выборку программистов. Конечно, то, что ты описал, это, скорее всего, тотальное большинство (именно с такими мне приходилось встречаться по работе), но бывают исключения. Очень много зависит от того, где ты работаешь, какое начальство, принципы и так далее.
А касательно ущербности самой сферы, то я могу сказать на личном опыте, что отчасти ты прав. Я на несколько лет выбыл из программирования и занялся бизнесом арбузным. Могу сказать, что это об этом решении я ничуть не жалею, я получаю больше энергии от работы и сам её формат кажется мне более живым и интересным. Но с другой стороны, порой, накатывает ностальгия по тому как бы построчить чего. Сейчас я планирую завести трактор и сьебать программистом, продав свой бизнес.
Не std::find, а оптимизированный контейнерный метод , тупица
lower_bound/upper_bound заменяются equal_range, поэтому и у меня встал данный вопрос
>Но мы передадим комитету
Мамке от меня привет еще занеси
Конечно есть исключения, один из моих близких друзей как раз мой коллега с первой работы, тоже был крестовиком, потом перекатился в МЛ и тоже ненавидит программирование и дцп.
>Но с другой стороны, порой, накатывает ностальгия по тому как бы построчить чего.
Да, у меня такая же фигня, только я теперь очень четко понял разницу программировать для себя и программировать для дяди в коллективе даунов разгребая их говнокод.
Первое действительно приносит удовольствие.
Второе же приносит один сплошной негатив.
Поэтому если хочется программировать, лучше сделай это своим хобби и программируй когда это по кайфу, пили игры или приложухи какие-нибудь, заодно монетизировать все это будешь и будет лишняя копеечка в кармане.
>Сейчас я планирую завести трактор и сьебать программистом, продав свой бизнес.
Вот это очень зря, я бы не стал такое делать. Это все равно что меня свободу на рабство.
Настоящие программисты пишут на Фортране.
Используй только weak и shared. Вся эта move-семантика для пидаров.
>Это все равно что меня свободу на рабство.
В любом случае я буду стараться открыть свой бизнес там.
Просто в стране, куда я сьебыва, требуется огромный уставной капитал, чтобы учредить фирму, а помимо самого капитала мне нужно накопить еще какую-то подушку финансовую, чтобы не сбомжеваться. Поэтому я вынужден временно так проработать.
>Нужно ли использовать классы QFile, QString, если пишешь на Qt?
Да, нужно.
>Неужели у них реализация быстрее, шустрее и молодежнее чем у стандартной либы?
Нет, зачастую медленнее. Но
1) удобнее;
2) там функционала в 20 раз больше;
3) на всех поддерживаемых платформах работает предсказуемее чем стандартная либа (хотя иногда тоже поведение разное попадается), которая у всех своя;
4) ты ахуеешь пользоваться остальными частями Qt без них (в любом случае придётся всё перегонять в кутэшные типы).
Нужно использовать, когда функция может не выполниться. Например, если в ней происходит чтение файла и файл при этом не найден. Современная замена охуенной конструкции return ERR_HUYNYA_NAME;
Почитать можно stackoverflow. В общем то это универсальный ресурс, существование которого обесценивает все книжки по программированию вместе взятые.
Концептуально задачу исключений я понимаю, да, но вот читая Майерса, мутно представляю архитектуру использования исключений, он там пишет про всякие тонкие моменты их использования, при том на момент написания книги это была новая фича. Мой же опыт использования исключений - throw(ex(str)) при любой ошибке, как ты и отметил, а try оборачивал весь код в мэйне, чувствую, это полная хуйня.
Ну, хуёво если тебе приходится оборачивать код в мейне. Можешь наследовать свои исключения от std::runtime_error, но это скорее всего будет избыточно. Исключения - это не главная часть программы, просто используй их самым стандартным образом и не еби себе мозги.
throw(std::runtime_error("chto-to slomalos'"));
> l-value объект
У вас там каникулы ещё не кончились, что ли?
1. lvalue, а не l-value
2. lvalue это не объекты, а выражения
Их либо не используешь вообще, либо используешь везде, иначе будет каша. Первый вариант, имхо, лучше, особенно после добавления появления в стандарте optional. Конечно, ничего плохого в том, что всякие штуковины из внешних библиотек, которые завязаны на исключениях, нужно оборачивать в try-catch нет.
Памагите
Спасибо
>Где нужно использовать, а где нет
Когда случилась критическая пиздецома и программа дальше выполняться не может
> Как поживаете, лошки?
Мальчик.
Мне 20 лет.
Я работаю в компании-лидере в своей отрасли.
У меня очень красивая и умная девушка.
Я лидер метал-группы.
Я учусь в лучшем техническом вузе Москвы.
У меня в друзьях ходят очень влиятельные люди — от сыновей начальников ФСБ до директоров по безопасности отдельно взятых компаний.
Ты только что открыл врата в ад
Спасибо
Bruh..
while (std::cin >> std::skipws >> x)
std::skipws нужен как раз, чтобы символы переноса строк игнорировать, но тогда поток ввода нужно будет прерывать вручную.
Или через std::getline + std::cin.ignore()
Как коротко сделать, чтобы возвращалось true при 0 или одной ошибке?
>при 0 или одной ошибке
Не понял вопроса, но отвечу. Если хотя-бы одно условие в твоём случае даст false, то все последующие условия не будут проверятся. Можешь разве что расположить условия от наиболее ожидаемого к наименее ожидаемому, хотя это экономия на спичках ящитаю
Ты прав, хреновая идея. Тогда разобью целый if на if-ы для каждого условия и пройдусь счетчиком, но хотелось бы идеальное решение.
Сделать вложенные if-ы и создать счетчик, инкрементирующийся при ошибке. В конце смотрим его значение и возвращаем соответствующий результат
//...
}
Не благодари
> if-ы и создать счетчик, инкрементирующийся при ошибке. В конце смотрим его значение и возвращаем соответствующий результа
Лучше в стиле современных плюсов заебашить вектор предикатов и форичем с лямбдой пройтись
ОП
Бамп вопросу.
Открой книжку страуструпа на 1300 страниц и читай. Она вообще обо всем для человека, умеющего программировать. А сам стандарт открывать не надо, он для комитета
>>12304
>>12302
А зачем мне старье учить? Это тоже самое, что и .net framework 3.5 изучать, смысла нет. Пролистал краем глаза первую взятую книгу Бьерна, там простейшие принципы ООП и программирования в целом, я это все знаю. Мне же нужно научиться писать современный код на плюсах в реалиях 2020 года.
Effective C++
Effective Modern C++
И что-нибудь по STL, хоть из того же C++ Primer.
Хотя сама уверенность, что ты легко воспримешь C++ после дотнета, довольно забавна. Скорее всего, ты не осилишь даже указатели, и бросишь.
>Хотя сама уверенность, что ты легко воспримешь C++ после дотнета, довольно забавна. Скорее всего, ты не осилишь даже указатели, и бросишь.
Сколько гонору-то. Ничего в этом сложного нет, если знаешь архитектуру компьютера и ОС
Пасибо. Еще вопросик. Есть у меня программа на си, которая считывает символы. Все хорошо, пока я не нажму enter. Говорят что я пытаюсь использовать невыделенную память. Что не так с переносом строки?
Я понял в чем была ошибка. Но теперь не знаю как задачу решить. У меня на вход поступает последовательность символов, в случайных местах разделенная пробелами и переносами строки.
Затем, что одни фичи были добавлены в одном стандарте и есть до сих пор, а другие заменены/устарели/усовершенствованы.
Тебе просто нужно учить современный cpp, где-то это будет 11 стандарт, а где-то 17, скоро и 20 на подходе.
Можешь посмотреть лекции по C++ от PVS Studio, там кратко рассматриваются нововведения стандартов.
Двачую, в 20-м подвезут концепты и рядовому программисту вообще нахуй не нужны будут эти std::enable_if и шаблонные рекурсии со сфинаешкой, просто requires написал и идёшь чай пить, но некоторые вещи типо лямбд и структуред байндинг лучше запомнить, ибо очень даже полезная хуйня
Как минимум умение прочитать чей-то код и не проебать собеседование - причины это всё знать. Теперь ты просто увидишь
template<class Container>
void print_stl_container(const Container& c) -> requires(begin(),end())
и сразу поймешь что к чему, без всяких std::void_t<decltype(std::declval<Container>().begin()...
Так что если ты вкатываешься в 20+ году, то смысла учить эту часть в 17-м нет
Смысл ее учить таки есть, потому-что даже гугл еще не перешел на C++17, не говоря уж о C++20
Когда меня собеседовали, спросил про это. Сказали что через год-два будет С++17 только, щас 14.
Вот ты опытный видимо, обьясни нюфагу почему большие компании просто не могут просто перейти на новый стандарт? Если код был на С++11, в чём проблема перейти на С++17, учитывая что весь код обратно совместим? Разве что у них там уб на уб, тогда действительно лучше не трогать
Я переводил проект на работе с С++11 на С++17, и включал /permissive- в Вижуалстудии (чтобы код был полностью стандартным, без хуйни).
Так вот - главная проблема это всякая нестандартная хуйня, которую пишут как знают. Особенно в случае микрософта с возможностью биндить rvalue к неконстантным референсам, и прочей вот такой вот странной херне. Просто включаешь новый свитч компилятора - и у тебя пакован ошибок компиляции.
Если есть кому это разгребать мне лол, то здорово.
Ты прав в том, что если у тебя действительно хороший код - то да, никаких проблем нету. Но хороший код редко у кого есть.
>то да, никаких проблем нету. Н
То есть по факту, если код с соблюдением стандартов и без всяких велосипедов, то чтобы перейти на новый стандарт ты просто флаг компилятора меняешь, и всё? Сколько у же у компаний говнокода, раз они годами перейти не могут
По идее - да. Но часто есть другие вещи, как, например, легаси-говно в проекте, которое никто не будет вот так вот менять. Такие как "наши проприетарные либы собраны вижуал студией 2010, мы будем сидеть на ней всю жизнь". В реально-больших-уровня-гугла проектах много подобной херни. С маленькими проектами все сильно проще.
Странно что до сих пор не сделали фичу типо extern "C++11", обернул часть кода в 11 стандарт, а новые фичи на 20-м пилишь и не паришься о легаси.
Таких предложений в комитете было дохуища. Комитет не хочет делать диалекты языка. Да и какой ад будет для компиляторщиков поддерживать эти гигатонны дряни. Сейчас Витторио Ромео попытался пропозал с Эпохами запушить в комитет, но шансов немного на его принятие.
Разговаривал на эту тему с Тимуром Думлером в Питере позавчера
Можно же просто decltype(auto)?
>Я учусь в лучшем техническом вузе Москвы.
У меня флешбеки от этого выражения, не говори так больше.
А чего ты тогда к крестобоярам пришёл? Перепиши на плюсах, си для этого не очень подходит. Ну или бегай через for и проверяй, не пробел ли этот символ.
Да блин. Условие оьязательное, что нужно на си писать. Ладно. Я пошел в си тред. Спасибо
[code]
template<class T>
class MyPtr
{
T const m_p;
template<class U>
friend class MyPtr<TT>;
// Напрямую создать не можем
MyPtr(T const ptr) : m_p(ptr){};
template<class U>
friend MyPtr<T> my_cast(MyPtr<U> const & other)
{
return MyPtr<T>(dynamic_cast<T const *>(other.m_p));
}
}
[/code]
Как заставить my_cast "увидеть" приватный конструктор MyPtr?
Ебаная макака, там в конструкторе T const ★ и в самом классе тоже
Это копия, сохраненная 18 ноября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.