Вместо шапки - https://github.com/sosachbot/cppthreadhat/wikiОтветы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/Песенка - https://youtu.be/5EHPETP8lZ8Прошлый - https://2ch.hk/pr/res/1036675.html
Во что компилится С++, что такое Си с классами и как вкатиться джуном на плюсы.
https://www.quora.com/How-much-money-does-Bjarne-Stroustrup-make-in-Morgan-Stanleyпришел таки к успеху! (но на стрижку до сих пор жопит)
>>1045414>>как вкатиться джуном на плюсы.Не мыть голову месяц
>>1045473а ножки можно?
>>1045411 (OP)Ну что ребят, запилим что нибудь годное? Может свой БолженОS или компилятор машинного кода?
>>1045473Не смешно, я правда вкатывался джуном на плюсы.
>>1045411 (OP)Опять какой-то петух высрал кириллическую С в заголовок.>>1045343>- Стабильного ABIБинарнопетух подъехал. Нахуй надо? Есть ещё один язык, кроме ассемблера и псевдоассемблера, у которого это есть?>>1045350Надо разделить всю программу на достаточно маленькие для тебя части и везде чекать наличие ошибки. Другого способа получить строго defined-поведение программы нет. Посему у std::thread нету никакого terminate.>>1045369Ты путаешь ретурн-значение с аварийным завершением.>>1045513>компилятор машинного кода? У меня тут идея. Надо провести битву самодельных компиляторов для x86, тестируется:- производительность собранных экзешников в разных задачах- производительность экзешников, собранных другими компиляторами-участниками и транслированных в ассемблер.каково блядь, кому только это надо?
>>1045414Ну это что то уровняПитон это си с абстракциями
>>1045532> битву самодельных компиляторов для x86Я только за анон, какие сроки выполнения, условия? Если найдутся еще желающие, чтобы участников было хотя бы 3-4 то можно провести.
>>1045545Я пошутил, конечно, так как создание компилятора (с нуля?) - огромный труд. Просто спетросянил в ответ на петросянство.
>>1045520Чёлкой сможешь хлеб отрезать?
>>1045545Ну, я думаю где-то год минимум. Может полтора. Если компилить скажем сишку или питон. Если кресты - то я ебал его нога и идет оно нахуй.
>>1045520И как?
Ссылка на базовый класс связана с производным: base& bRef = d, где d - объект производного класса. В производном классе есть метод e(), которого нет в базовом классе. Я делаю каст static_cast<derived&>(bRef).e() и вызываю метод e(). Какого хуя он вызывается, если в базовом классе его нет?https://ideone.com/NzK90p
Аноны, что здесь происходит? int x[]= {3, 5, 8}; cout << (*x)["my string"+3];
>>1045567Вкатился, вот с вами тута
>>1045577Так понимаю, это эквивалентно этому:int x[]= {3, 5, 8};cout << ("my string")[*x+3];
>>1045588точно также, как x[2] = 2[x] = 8 в данном случае
>>1045582Сколько тебе здесь платят?
>>1045588Да, эквивалентноВыводится iПросто ньюфаная и не понимаю как это работает
>>1045591Пасскодами
>>1045576Какое-то странное поведение, если в производном классе создать поле с дефолтным значением и добавить в распечатке в e() его, то static_cast<derived&>(bRef).e() здесь он всегда вместо значения будет 0 пропечатывать.
>>1045576e() - невиртуальный метод. Компилятор просто взял и подставил вызов функции, без шароебли по vtable.Давай с виртуальной попробуй.А с нулями тебе просто повезло на пустую память по смещении от адреса указателя на объект
>>1045564Может, Схему? Парсить S-выражения может школьник, стандарт малюсенький, а оптимизировать можно дохрена.
>>1045629Скажи мне, как устроены объекты в крестах? Я так понимаю, ссылки на виртуальные методы лежат прямо в объекте? Как они отделены от данных? Почему бы просто не носить в объекте ссылку на тип?
>>1045640В vtable лежит ссылка на typeinfo. А если тип не полиморфный то typeinfo статически определяется на этапе компиляции. Больше, собственно, ничего характеризующего тип не лежит. Да и это опционально и отключабельно в компиляторе.
>>1045644Нет, я имею в виду, что все ссылки на методы класса могли бы лежатьтв одном месте, например, а не таскаться длинной бородой заткаждцм объектом
>>1045640Много писать, да и лень с телефона. Вот здесь с примерами и в целом можно разобраться - https://habrahabr.ru/post/51229/
>>1045645Так vtable и есть один на класс. В объекте только указатель.
>>1045648Ну ок тогда.
>>1045645Так и есть - vtable создаётся одна для класса, в объекте хранится лишь указатель на vtable. В конструкторе, указатель устанавливается на vtable класса, в деструктор к устанавливается в vtable родительского класса перед вызовом деструктора родителя.
Новый ньюфаг в треде. Пытаюсь написать функцию, которая находит наименьшее общее кратное. Иду простым лаконичным путем (пик 1) - нихуя не работает, судя по дебаггеру, луп просто игнорируется. Но do-while(true) луп с той же логикой (пик 2) отрабатывает нормально.Что за чертовщина? Что я делаю не так?
>>1045655В первом случае заменил && на ||
>>1045655Не (А и б) равно (не а или не б).
>>1045659>>1045662Ох, действительно. А еще работает>while (! (max % a == 0 && max % b == 0)) {}Теперь буду сидеть и пытаться все это осознать.
>>1045576На сколько мне известно, смотри:Имеется ссылка класса Base.Потом ссылка Base кастится в ссылку derived, но участок памяти до сих пор ссылается на объект Base.Значит теперь у нас вместо вот этого: Base & bRef = b, вот это derived& bRef = b. А имена функций и члеов начинают искаться из области видимости типа(в нашем случае bRef - у него теперь тип derived, то есть ищется функция или имя в области видимости derived). Вот почему вызвалась e.
>>1045576Я тот анон, который ответил выше. Ты сам в вопросе ошибся. bRef = b, а не d.
>>1045664Вот тебе как понять. Пример твоего. while(!(true && false)) - это пример как у тебя может получиться. Чтобы работал цикл, нужно чтобы в главных скобках был true. Так как true && false рано false, то отрицание (!) превращает из false в true. Если нужно подробнее, обращайтесь.
Как обновить g++ под Бубунтой до 17-ой версии?
>>1045784sudo apt-get upgrade g++
>>1045576> Какого хуя он вызывается, если в базовом классе его нет?Статик каст не проверяет корректность преобразования, это в стандарте написано. Привет UB (или как там?). Используй dynamic_cast, тебе в рантайме это выплюнется.>>1045598ALO UB ETO TI>>1045784Нету у G++ такой версии, блядь (или ты про пакет из новой Убунты?).
>>1045784Найди сторонний PPA репозиторий, если в официальном нет, или на крайняк сам сбилди, кроме --prefix можно вообще не заморачиваться и не указывать опции
Ребят, что почитать чтобы взяли джуном?вышки нет.. сори
>>1045864Абсолютно все книги в шапке и еще многое другое
>>1045864И чтоб стандарт от зубов отскакивал.
>>1045576https://wandbox.org/permlink/MO0KQlXvfO1aU9xm
>>1045864Как понять, что я джун? Если год назад устраивался на работу как стажер и до сих пор работаю
>>1045881Если паттерны используешь как ебалас
>>1045350Олсо, специально для этого сделаны эксепшены: всё то, что ты считаешь ненадёжным, ты оборачиваешь в try-catch и ловишь, при этом перед каждым вызовом небезопасной функции твои объекты должны быть в валидном состоянии (т.е. у тебя не будет ошибок и утечек, если любая ненадёжная функция завершится). Это достигается абстрагированием.
>>1045899А если вообще не использую?
>>1045926Ты их используешь, но не до конца понимаешь этого. И я не в плохом смысле о них говорил, паттерны - они везде, как бы ты ни хотел от них избавиться. Правильный дизайн приложения обеспечивает надежность/быстродействие/модифицируемость/тестируемость/защищенность/масштабируемость/робастность/... (нужное подчеркнуть).Некоторые местные петухи кукарекают по поводу экономии лишних байт и тактов процессора, но ты их лучше не слушай. Грамотно составленный скелет приложения (архитектура или конструкция) и правильно выбранные алгоритмы провернут на хую всю их работу над сдуванием пылинок с полированных яиц кота.
>>1045926Паттерн - это вид взаимодействия между объектами. Ты чаще всего используешь ограниченный набор этих взаимодействий, то есть у тебя в голове какие-то паттены (шаблоны взаимодействия) есть. Где-то можно узнать, как они называются - почитать книгу какую-нибудь.
>>1045925>всё то, что ты считаешь ненадёжным, ты оборачиваешь в try-catchЭто Java-macaque-style. В C++ есть RAII и если ты пишешь try-catch блоки, то значит ты что-то делаешь не так.
>>1045936> паттерны - они везде, как бы ты ни хотел от них избавитьсяКогда в руках молоток — всё вокруг кажется гвоздями.
>>1045948>если ты пишешь try-catch блоки, то значит ты что-то делаешь не такРазве RAII позволяет отказаться от try-catch
>>1045951Практически полностью.
>>1045953Что в промышленном коде используется обычно?
>>1045955https://ru.wikipedia.org/wiki/G-code
>>1045948Я подумал - ты прав. Если вся иерархия объектов и функций сделана так, что вызов любой ненадёжной функции оставляет их в валидном виде - да, трайкетч для строго определённого поведения не нужен.
>>1045948Если я могу обосраться из-за того, что new бросит std::bad_alloc, то как мне обойтись без try-catch?
>>1045936Правильно, блядь, пусть всё к хуям тормозит, зато обдрочимся на ебучий скелет, который нахуй никому не сдался
>>1045974не использовать new, но это не делает концепцию исключений менее уебищной (если мы говорим о языке на котором пишем высоконагруженные и надежные системы)
>>1045976чем плохи исключения?
Анон, как можно в двух словах объяснить разницу между указателями и ссылками, упомянув const?Разница в том, что константные объекты не связываются с неконстантными ссылками?
>>10459781)слишком implicit. ты не можешь просто посмотрев на код понять где и что может пойти нет так, надо смотреть документацию. Из этого проблемы аля "тут чёто какойто экспшн выпал внезапно, а мы забыли трайкетч написать". В этом плане в Rust всё сделано просто прекрасно, монады, match, просто сказка а не язык.2) Очень сильно зависит от RAII, а RAII применимо далеко не всегда, я даже элементарно не могу в деструкторе класса File написать close(fd); потому-что при попытке записи временного буфера на диск на этом диске может закончиться место, и что делать непонятно (можно кинуть экспшн из деструктора))))))))))Сугубо личное мнение, может кому-то эта концепция и нравится
>>1045981>монадыВ расте нет Higher-Kinded Types.
>>1045974Никак.>>1045980Константная ссылка - это петросянство. Привести указатель на конст у указателю не на конст без статик-каста или реинтерпрета какого-нибудь ты не сможешь. В этом отличия указателя от ссылки нет.
>>1045974nothrow
>>1045980По идее, ссылки не должны менять то, на что они ссылаются. А вот указатель может менять то, на что он ссылается.
>>1045980Ссылки - для стековых объектов, указатели - для хиповых. Не константные - для выходных параметров (т.е. этот параметр изменяется в функции, см. out/ref C#), константные - для входных.
>>1045980ссылки - алиасы к переменным (еще одно имя), указатель - еще один объект, который модет указывать на другой объект. мы можем биндить конст ссылку к не конст переменной но не наоборот. по конст ссылке мы не можем вызывать не конст методы, но можем их вызывать непосредственно к неконст объекту. А вообще, это с практикой приходит
>>1045980Принципиальная разница одна - ссылка присваивается один раз при инициализации, и потому нельзя менять куда она ведет (без грязных трюков). В остальном разницы нет.
>>1045980>как можно в двух словах объяснить разницу между указателями и ссылкамиУказатель — объект, а ссылка — нет.
>>1045981И как же Rust решает проблему закончившегося места на диске?
>>1045974Зачем тебе ловить bad_alloc, посмотреть на него?
>>1046112Он не дает тебе забыть о том, что что-то может пойти не так. Всё время приходится или матчить, или траить, или анврапить
>>1046117Ок. Получили Err(NOSPC) при закрытии. Что дальше?
>>1045981>ты не можешь просто посмотрев на код понять где и что может пойти нет так, надо смотреть документацию.Просто пиши так, чтобы код был exception-neutral.> Из этого проблемы аля "тут чёто какойто экспшн выпал внезапно, а мы забыли трайкетч написать".трайкетч везде писать не надо, C++ это не Java.> Очень сильно зависит от RAII, а RAII применимо далеко не всегда, я даже элементарно не могу в деструкторе класса File написать close(fd); потому-что при попытке записи временного буфера на диск на этом диске может закончиться место, и что делать непонятно > В этом плане в Rust всё сделано просто прекрасноОхотно верю, что в Rust сделано прекрасно. На пике демонстрация этого «прекрасно».https://github.com/rust-lang/rust/blob/6ccfe68076abc78392ab9e1d81b5c1a2123af657/src/libstd/sys/unix/fd.rs#L240
>>1046122> при закрытии. Что дальше?>А дальше месэдж бокс какой нибудь, или ещё что-то, зависит от логики, лал>>1046126Я и не говорил что в расте охуительная стандартная библиотека особенно мне нравится момент, когда ты говоришь Vec::push({}), а он паникует)). Имел ввиду, что в расте куда больше возможностей для реализации надежных приложений, чем в С++.Разумеется и на плюсах прекрасно работают сервера, это лишь моя точка зрения)
>>1046132>А дальше месэдж бокс какой нибудьФайл открывается/закрывается глубоко в кишках какой-то либы, которая о GUI ничего не знает (и знать не должна).Откуда ей знать, что надо показать «месэдж бокс какой нибудь»?
>>1046134Я не понимаю в чем вопрос. Как сообщить либе что делать если файл не закрылся? Колбэки, события и тд и тп.Или я что-то не понял?
>>1046145>КолбэкиЛОЛ! Можно перефразировать: «Из этого проблемы аля "тут чёто какая-то ошибка выпала внезапно, а мы забыли колбэк дёрнуть".»Что насчёт асинхронности, реентерабельности и поддерживаемости такого кода?> Или я что-то не понял?Как писать поддерживаемый софт.
>>1046146не использовать дырявые абстракции и плохие архитектуры ¯ \ _ (ツ) _ / ¯
>>1046147Ну так зачем ты предлагаешь архитектуру на колбэках тогда?
Как дебагать на линуксе в g++?
>>1046193G D BDB
>>1046193>Как дебагать на линуксе в g++?>собрать со специальным ключом для дебага-g вроде, и дебажить по заветам >>1046199
>>1045951>>1045953хм, разве raii не является костылем для того чтобы использовать исключения?
Помогите запустить qtCreator+Cmake+LLVM. Я уже ничего не понимаю в этом процессе сборки программ.Связка qtCreator+Cmake+MinGW работает. Пытаюсь по аналогии запустить c LLVM. Меняю компилятор с/с++ на llvm, и он жалуется на какой-то сmake generator. Список возможных вариантов на второй картинке и ни один из них не работает и вообще ничерта не понятно что и где нужно прописать, куда что установить, чтоб оно заработало.Что ещё за генератор такой и зачем оно нужно? Компилятор компилирует файлы, CMake говорит что и в какой последовательности этому компилятору компилировать. Разве там есть что-то ещё? Чёрт ногу сломит, что мне прочитать, что мне сделать, чтоб эта хрень стала понятнее?
>>1046271>CMake говорит что и в какой последовательности этому компилятору компилироватьВот тут-то ты и проебался. Симейк никому ничего не говорит, он просто пилит мейкфайлы за тебя. То есть симейковый мейкфайл + генератор мейкфайлов = сгенерированный мейкфайл под конкретную платформу. Дальше сам разберешься.
>>1046271ЕМНИП, у LLVM для винды (?) нету make. LLVM на винду надо устанавливать вместе c MinGW, чтобы был make.
>>1046306Clang есть, он к MSVC каким-то образом липнет. Я так понимаю, он и pdb файлы мелкософтовские может жрать, вот это я понимаю совместимость.
>>1046271что, сучка, столкнулся с первыми реальными задачами и проблемами, отличными от "хелло ворлд" и уже заныл?а? это, блядь, твоя работа, иди сука и копай вглубь
>>1045997Разве если где-то внутри nothrow функции возникнет исключение которое мы забыли заткнуть кечем, оно не сломает свертку стека, что закрашит программу?
>>1046322Clang можно использовать либо с MSVC, либо с MinGW, сам по себе clang не будет работать
>>1046271Какие же спермобляди дегенераты, пиздец просто.
>>1046327Ты наверное перепутал nothrow с noexcept.nothrow можно передать как аргумент для new, например auto pVar = new (std::nothrow) Type. В случае ошибки new вернёт нулевой указатель.Если указывать noexcept для ф-и, и внутри неё ты захочешь вызвать ф-ю, которая может бросить исключение, то компилятор должен об этом сообщить.
>>1046199Но ведь хуйня же.
>>1046420> компилятор должен об этом сообщитьКажись я погорячился на этот счет.
>>1046327Нет, оно просто вызовет std::terminate и сразу завершит твою программу.
>>1046420Не должен. программисту лучше знать, что вот конкретно в этих условиях оно по-любому не бросит, отвечаю. Поэтому спокойно зови что угодно, но если что - сам виноват.
>>1046327Если вызывается std::terminate то никаких гарантий того, что стек будет разворачиваться в обратную сторону и будут вызываться деструкторы объектов нет, потому что это нахуй не нужно зачастую, ведь система подчистит ресурсы мертвого процесса сама. Веселуха будет, если ты кинешь исключение во время обработки другого исключения, например:у класса a есть конструктор и деструктор, второй кидает исключение, есть также класс b, который наследуется от класса a и в конструкторе кидает исключение. Если ты поместишь объект b в область видимости try блока, то сначала вызовется конструктор а, потом вызовется конструктор b и бросит исключение. Стек начинает раскручиваться в обратную сторону, попутно вызывая деструкторы для всего, что успел инициализировать в try-блоке в порядке, обратном их появлению. И тут ... ннна нахуй ... деструктор b вызывает деструктор a и кидает еще одно исключение, вот это неожиданность. Конечно, фактически твоя программа вышла за пределы try блока и поэтому исключение перехвачено не будет, поэтому будет вызвана std::terminate со всеми вытекающими. Так что вот поэтому не рекоммендуется кидать исключения в деструкторах, я еще ни разу не видел, чтобы так делалось.
Если ли смысл вкатываться в асемблер и низкоуровневое программирование?
>>1046521зависит от твоего текущего бекграунда
>>1046537читал пару книг из шапки
>>1046521Смотря зачем. Если из личного любопытства, то есть. Если ты надеешься, что тебе это где-то пригодится, то это вряд ли
>>1046571ну, асм щас нужен реверсерам, в частности вирусным аналитикам, это не программирование, знаний надо дохуища (хотя на работе изо дня в день будешь заниматся монотонной заябывающей рутиной), платят меньше чем кодеру с++, а кодеру крестовику платят меньше чем пхп-обезяненизкоуровневое программирование? это че? если микроконтроллены, то надо знать микроэлектронику, тоже вообще отдельный пласт знаний от программирования, знать надо опять дохуищи всего, чтобы при этом зарабатывать раза в 4 меньше все той же пхп обезяныили низкоуровневое программирование - это драйверописание под линукс или винду? ну чтож, надо потратить 10 лет чтобы смочь написать небажной полноценный драйвер щас, и при том что подобной работы в мире все меньше и меньше, хуй куда устроишься
>>1046799>при том что подобной работы в мире все меньше и меньшеПочему такой работы становится меньше?
>>1046811Прежде всего не каковы причины его утверждения, а истинно ли оно вообще. Пусть тащит статистику.На сколько я могу судить, количество железок с течением времени только растет, под каждую нужно написать софт. Да, он скорее всего будет повторяться, и процесс сведется до тривиального, но кто-то эту работу должен делать?
>>1046811потому что все написановзять тех же системщиков на линуксесетевой стек более-менее написали, спиздив многое из bsb-системфайловые системы тоже довели до нормального состояния, во многом позаимствовав идеи у соляркипосле того как сделали аппаратную поддержку виртуализации на x86 процах (которая уже десятки лет до этого бала на мейнфреймах), сделали и всю инфраструктуру нужную для виртуализации на линуксах, поверх этого сделали инфраструктуру нужную для построения облаков, saas и paas сервисовбезопасность доже докрутили, спиздив многое опять же у майкрософт и у коммерческих реализаций юниксовых системчто щас остается системникам? допилились виртуализацию на уровне оперативных систем, в общем докер и все что ниже его крутиться и инфраструктуру поверхсамо собой, за эти два десятка лет писались драйвера под всяхие железки и щас в принципе почти подо все уже написанои че получается? то что системники под линукс сделали свою работу и большинство может смело послано нахуйа оставшаяся небольшая часть будет уныло дописывать драйверки на время от времени появляющееся новое оборудование
>>1046521Если ты спрашиваешь - нет.
>>1046836Ты так говоришь, как будто бы все уже сделали до нас, и нам уже ничего не остается. Все равно будут придумывать новые технологии и хуевины, под которые тоже надо писать драйвера
>>1046799>надо потратить 10 лет чтобы смочь написать небажной полноценный драйверЧему там 10 лет учиться, функции инициализации устройств наизусть выучивать?
Киньте годный материал по DFS и BFS, где все нормально объясняется. Заранее спасибо!
>>1046879Ну хз, сложно как то. Пару лет назад видел гайд как написать драйвер, но у меня ошибки какие то полезли, в общем не скомпелировалося. Может скинешь какие нибудь видосы по этой теме?
>>1046879те лично ты писал драйвера и не столкнулся с трудностями?именно поэтому была влеплена сажа?
>>1046885>ошибки какие то полезли, в общем не скомпелировалося>видосы по этой темеой, нетнаверное не стоит тебе тратить на это время
>>1046853в общем случае, нетлюбая относительно новая технология имеет свой период в начале становления, когда ей нужны инженеры от которых требуется создавать, улучшать компоненты технологии, а потом уже такие специалисты не нужны становятся, когда уже технология становится зрелой, остается нужда по сути в надсмотрщиках и настройщикахтакое происходило с энергетикой, с железными дорогами, да с любой технологиейда что там, про это целые книги написаны типа "Блеск и нищета информационных технологий" Николас Карра
>>1045411 (OP)Сап, ищу информацию по функциям. Решил немного побольше изучить как работают функции. Такой вопрос, я правильно понимаю, что прототип функции, определение которой находится после main(), он помогает нам по адресу в момент вызова определить область памяти определения функции (исполняемого кода)? Для этого же нужны прототипы? И если да, то как я понял в данном случае будет происходить одновременно и вызов и само определение?
>>1046947Сигнатура функции прототип нужна компилятору, чтобы он мог следить за передаваемыми аргументами, и возвращаемым значением. про то, где именно располагается функция думает линкер. Сигнатура функции никак не связана с её конечным адресом в бинарнике, если я правильно понял вопроса
>>1046959и тут ты такой сразу подорвался отвечать нубасухорошая собачка
>>1046961пасиб:3
>>1046430Знаешь что-то лучше?
>>1046969Под линукс нет
Ребята, есть гайды как вирусы писать на С?
>>1047021нет
>>1047021Был тут один такой...
>>1047021Гугли бля. Эту тему обсосали уже везде. Упоротые даже на Паскале их писали.
2ch подскажи, из текстового файла получается нельзя удалять информацию, только полностью перезаписывать файл?
У меня русские символы не выводятся, это нормально? >>1047131Винда нерусская, подозреваю проблема в этом.
>>1047078Можно удалить конец.
>>1047021Без задней мысли тащемта
Может кто подсказать когда на gcc файловую систему вытащат из экспериментала? И как с этим дела обстоят на windows? Я пробовал её использовать и там, но что-то не получилось. Вроде файловая система была самой значительной особенностью нового стандарта, но она почему-то до сих пор в экспериментале.
>>1047134Спермоблгоспода должны страдать.
>>1047134Почитай про imbue для basic_ostream. Тебе нужно установить локаль в соответствии с кодировкой текущего файла.
>>1047171Потомучто компиляторы ещё не до конца поддерживают 17й стандарт. filesystem будет кросплатформенной, под виндой и пингвином будет работать одинаково
>>1045411 (OP)Анон, как препроцессор разворачивает такие макросы #define MAX(a, b) ((a) < (b) ? (b) : (a)) и почему, например, при вызове MAX(1, 2) параметры 1 и 2 подставляются вместо a и b, а не вместо MAX?
>>1047281ты хоть сам понял, что написал?!
Делаю тетрис с библиотекой ncurses. Блоки делаются с помощью окон, но проблема в том, что когда вращаю окно, не сохраняется пропорция ширины/высоты. Обьект который был длинным, становится коротким, но широким при вращении при том, что значения высоты/ширины одни и те же просто поменяты местами. Как сделать пропорцию?
>>1047314Да.
>>1047281>как препроцессор разворачивает>#define MAX(a, b) ((a) < (b) ? (b) : (a))Так и разворачивает. Если после этого где-то в тексте будет int t = MAX(3,100), то перед компиляцией он туда поставит int t = ((3) < (100) ? (100) : (3)). Если будет в где-то MAX(sin(1.43xx),"saa2131_asd"), то так и подставит ((sin(1.43xx) < ("saa2131_asd") ? ("saa2131_asd") : (sin(1.43xx)) и выдаст там соответствующие ошибки (а ещё будет считать синус два раза в некоторых случаях).Не совсем понимаю, как он может подставить 1 и 2 вместо MAX, а не вместо a и b. Какой в таком случае вид должно иметь MAX(1,2) после обработки препроцессором?
>>1047078С помощью STL ты можешь сделать только truncate. С помощью большинства других API ты сможешь сделать только то же самое.>>1047281>почему, например, при вызове MAX(1, 2) параметры 1 и 2 подставляются вместо a и b, а не вместо MAX? Потому чт осинтаксис, блядь.
ПереКОДhttps://2ch.hk/dev/res/2031319.html
Хорошие советы для сишных программистов выложены тут http://labor-union.wikia.com/wiki/Lifehacks Заниматься исключительно вашими должностными обязанностями и не позволять навешивать на себя чужих. Если ваша должность - Software Engineer или Senior Software Engineer, то вы должны и обязаны заниматься разработкой софта. Никакое ручное или полуавтоматизированное тестирование, никакое обучение джуниоров, никакое преподавание в вузе, никакое замещение тимлида в течение двух недель (на время которых вам, кстати, не повысят вашу почасовую ставку), никакое проведение семинаров, никакая уборка помещений, никакие погрузочно-разгрузочные работы не входят в список ваших обязанностей. Современный технический специалист не должен позволять управленцам садиться ему на шею и ездить на нем. Занимайтесь только разработкой софта, делайте свою работу хорошо, становитесь отличным техническим специалистом и безгранично развивайтесь в этом направлении. Требовать давать вам только те задачи, на которых реально можно стремительно вырасти. Если вы - студент, то требуйте задач уровня миддла. Если вы - миддл, то требуйте задач уровня синиора. Если вы - синиор, то требуйте задач уровня архитектора. Если вы лично считаете, что в течение полугода успешно справлялись с большинством технических задач, то требуйте повышения или уходите в другую компанию на другой проект. К сожалению, у многих программистов есть предубеждение, что если они будут полгода делать задачи своего уровня, то их повысят. Нет, не повысят. Наоборот, тимлиды и менеджеры будут годами использовать вас, как совхозную лошадь, загружая монотонной посредственной работой, и вся ваша карьера превратится в вялотекущий дауншифтинг с работающей бедностью и отсутствием крупных долларовых сбережений на период зрелости и старости. Легко менять компании, если вы почувствовали, что на текущем месте работы развитие вас как технического специалиста идет недостаточно быстро. Никогда не привязывайтесь ни к работе, ни к работодателю, ни к коллективу. Выходите из зоны комфорта раз и навсегда. Вообще не привязывайтесь ни к людям, ни к работе. Также не тратьте ваше время на женщин, особенно, если они не понимают важности ваших профессиональных интересов, тормозят ваше развитие, расхищают ваше время, внимание, деньги и прочие ресурсы или требуют от вас наличия каких-либо социальных статусов, особого положения в обществе, смены профессии, перехода на управленческие должности и так далее.
>>1047673>Профсоюзы должны объяснять программистам, что они не должны оказывать бесплатный профессиональный консалтинг на Stack Overflow. >нужно коллективно осуждать тех, кто выкладывает на YouTube самоучители по диагностике и ремонту любых неисправностей материнских плат ноутбуков или диагностике жестких дисков, или профессиональному восстановлению данных, напримерЧто за бред. Пара хороших советов есть, но в основном какой-то идеалистический бред.
>>1047673>Вообще не привязывайтесь ни к людям, ни к работе.Зачем жить то тогда? Мне не интересно без этого, в таком случае мотивации не то что на какое-то "развитие вас как технического специалиста" будет не хватать...
>>1047330Никак, это от пропорций литералов зависит. можешь попытаться найти квадратный шрифт для консоли
>>1047330>Как сделать пропорцию?Как диды - из двух символов.
>>1047719Лучше даже так, скобочками.
>>1047719В аски или в расширении 8-битном есть еще полностью закрашенный треугольник и закрашенная верхняя и нижняя половины. Но один хрен, если соотношение сторон литерала не 1 к 2, квадратиков не получится.
>>1047722>полностью закрашенный треугольник и прямоугольник конечно же
>>1047722>если соотношение сторон литерала не 1 к 2, квадратиков не получитсяА ровный квадратик и не нужен. Главное, чтобы пропорции примерно совпадали, глаз это нормально воспринимает.
>>1047724Я как-то монохромный видос так в консоль выводил, сносно было.
>>1047673Хуйню какую-то выдумал. Новую секту мутишь?
>>1047703у меня даже что-то вроде испанского стыда за человека что написал эту пасту и за человека что ее постит постоянно
есть checkedlistbox1, туда добавляются номера, которые написали юзвери. как предотвратить добавление одинаковых номеров с разным началом? например:+79xxxxxxxxx79xxxxxxxxx89xxxxxxxxx
>>1047773блядь, дело не в checkedlistbox1, если что. просто нужен алгоритм
>>1047773Парсить, да проверять кек
>>1045453Что-то мне не верится. Base salary не бывает такой большой.
>>1047786А, ну тогда 100к как в дс)))
>>1047788Ну, не 100к, но и не $744k. Я думаю база где-то в районе $300k-$350k. Бонус может превышать базу. Поэтому $744k (в год) вылядит реалистично как полная зарплата.
Посоны, есть одна здоровая dll'ка и её исходники. Как исследовать то что занимает дофига места, и попытаться уменьшить её? Stack unwinding включён.
>>1047769>за человека что написал эту пасту и за человека что ее постит постоянноУ меня такое странное чувство, что это один и тот же человек.
>>1047773Хранить длинные номера в международном виде, международный вид подстраивается под локаль. Алгоритм для РФ:если цифр 11 и плюса нет, то это международный формат без плюсаесли цифр 11 и начинается с 8, то нутыпонелесли цифр 7, например, то хранить в таком же виде.>>1047814Пульнуть исходники в IDE и посмотреть на литералы/инициализации, например. Loop unrolling увеличивает размер кода, если что.
>>1045411 (OP)Так у меня тут важный вопрос (который попадет в топ вопросов прошлого треда):Как узнать сколько измерений у массива?Инби4: посмотреть в коде; а как ты инициализируешь массив?; тупой вопрос; ты наверное имел ввиду размер массива.
>>1047850Как найти то, чего нет?
>>1047851Мне цифру-количество надо:Аррей[] - 1Аррей[][] - 2И т.д.
>>1047852посмотри в объявление массива, чтобы узнать размерность ¯ \ _ (ツ) _ / ¯.если нужна функция, то тут без шаблонов никака зачем тебе?
>>1047850http://en.cppreference.com/w/cpp/types/rank
>>1047853>инби4: посмотреть в коде> без шаблонов никакДа мне хоть методом/классом/конструктором.Мне нужен просто понятный синтаксис/пример на крестах.> а зачем тебе?Задание такое стоит, значит надо (я не спорю про то что оно нужное/ненужное).Нагуглил пока что полтора примера на mdsn но ничего не понял так как я совсем нюфаг в крестах.
>>1047856Спасибо, но я не совсем понял как запихнуть массив который у меня в классе. Можешь объяснить ньюфагу если есть время?
>>1047862>я не совсем понял как запихнуть массив который у меня в классе. Без задней мысли, как обычно.
>>1047863По синтаксису в мейне.Например есть class Klass {int *array = new int [size];}, и в main - int value. Как в мейне правильно писать?
>>1047862http://ideone.com/jBes8q
>>1047850Реализуй свою функцию. Можешь даже рекурсией, так даже быстрее должно получиться - T(n) = Θ(n lg n) Аноны за тебя думать что ли должны?
>>1047879двачую
>>1047865Ты должен сделать свой УКАЗАТЕЛЬ public, иначе его никому не видно.>>1047881>Можешь даже рекурсией, так даже быстрее должно получиться - T(n) = Θ(n lg n) Это даже не смешно.
>>1047885Разве это была шутка?
>>1047893Блядь, а что, нет?
>>1047899А что сложного? строк 30 от силы
>>1047899В чем шутка? То что я примерную сложность алгоритма написал или про рекурсию? И то, и другое было написано серьезно.
>>1047901>>1047904Какая ещё сложнось алгоритма? Сколько по-вашему может быть звёзд у указателя / измерений у массива? Асимптотическая оценка подразумевает что-то охуительно большое, а не то, что измеряется пальцами одной руки в 99,99% случаев. Логарифм там откуда, блядь? n - это длина числа звёзд указателя в разрядах или само число разрядов? Какая операция является основой для определения сложности?И самое главное - где хоть слово о шаблонном дерьме, в которое надо окунуться для того, чтобы это сделать без использования std::rank?
Привет, вкатываюсь к вам из жс, подскажите что почитать. Не хочется заново все муть читаться про типы данных, итерации и прочее.
>>1047879Спасибо анонче, выручил
>>1047920Стандарт почитай.
Напомните, как круче писать:<< endl;Или<< '\n';
Я тот ньюфаг что спросил за измерения.Оказалось оно не работает с динамическим массивом.Можно как-то создать статический массив размера существующего динамического (компилятору не нравиться неконстантное значение) (это максимум что я пока придумал) или по другому обойти эту проблему?
>>1047920>подскажите что почитать"благоволительницы" литтелла - классная книжка, в списке моих любимых будет
>>1047932><< '\n';
>>1047912Тебе алгоритм надо как обойтись без rank? щяс
>>1047966А мне Даниела Стил и Паоло Коельо нравятся.
>>1047954Он на то и статический, что размер должен быть известен на этапе компиляции. Вообще можно пощекотать себе анус с использованием alloca, но тебе с таким уровнем рановато ещё.Можно создать копию текущего динамического массива или просто статический с длинной которой с лихвой хватит на все возможные данные и руками следить за его длинной.
>>1047977могу только посочувствоватьдаже высокодуховные девы коэльо щас не котируют, так чтож вы сядете в лужу упомянув при них этого автора
>>1047912https://ideone.com/KkXRm6Надо окунуться в шаблоны, и частичные специализации>>1047954Полная ахинея, статический массив на то и статический, что его размер известен на момент компиляции, размер динамического массива познается лишь на этапе исполнения
>>1047979>длинной которой с лихвой хватит на все возможные данные и руками следить за его длинной.>А еще можно использовать stl, это же тред про C++
>>1047986>template<class T, unsigned I>Я тут мимопроходил мимо этих шаблонов, но это же получается, что оно этот шаблон будет разворачивать для всех возможных длин массивов, которые встречаются в коде? Брр, ну и ужасы.
>>1047814>здоровая dll'ка>и попытаться уменьшить её?хочешь ее отправить в прошлое? на компы с 95 виндой и 300 метровым жестким диском?
>>1047814ну а вообще "жирные" дллки это обычно ресурсные дллки, там куча картинок, текста и прочего что нужно экзешнику
>>1047795я вообще думал что страуструп на профессорском подсосе (тыщ 50-60 в год) сидит у себя в техасском технологическом (охуенный кстати универ из нераспиареных)а тут вон оно как, бабло зашибает :D
>>1048001>в техасском технологическомхм, попутал с TAMU
>>1047995Это же рекурсивное инстанциирование ¯ \ _ (ツ) _ / ¯. Если привыкнуть, то нормально)
>>1048003угу, говорят, что уже на следующую неделю работы в морге перестаешь чувствовать какие-либо раздражающие запахи разложения
страуструпа вот обычно неуважают и хуесосят всякие молокососы, а но умеет себя пиаритьв частности, поддерживает очень давно свой сайт на отдельном домене, не забывает его обновлять всегдавсе его достижения там указаны, все расписаноstroustrup.comтакие дела
>>1048012На самом деле писать и понимать такие штуки - нихуевый квест, выполнив который можно свихнуться считать себя лучше других
>>1048018еще и бабло, кстати, зарабатывать умеетна книжках можно неплохо зарабатывать - оказывается это такой "удобный" доход, книгу написал, а она постоянно издается, переиздается, допечатывается, потом у англо-саксов все нормально с электронными площадками для торговли ебуками, а это еще удобней, с цифры денежки вообще каждый месяц капаютв общем, раз написал, а деньги идут всю жизнь, тем более у него там наверное в сумме миллионные тиражи, куча баблапотом случайно попал на влог отдной тетки (реально тетки), уже в "баба ягодка опять" возрасте перекатившейся в америку жить, дак она в видео и проговорилась - типа, что ее все хуесосят в интернете, что у ней понаписано куча неграмотных книг в мягкой обложке типа "как выйти за американца", "разговорный английский для совсем не знающих и прочее", страшные разговорники типа фраза на русском - перевод этой фразы даже не транскрипцией, а в виде "хау ду ю ду", она на это заявила, что у ней они все выложены в амазон и их, блядь, покупают, и у ней каждый месяц денежка с них, баксов 600-700 набирается, и получается что это вроде как настоящее вложение - ты тратишь время, создаешь продукт-книгу, а потом уже получаешь денежку с этоготакие делаа у страуструпа наверное гораздо больше денег с книг выходит
>>1047997Проблема в том что линковка при компиляции этой самой дллки дофига времени занимает.>>1047999В том то и дело что там только код.
>>1048432Обычно место занимает debug info.
>>1047997>хочешь ее отправить в прошлое? на компы с 95 виндой и 300 метровым жестким диском?Не всякая .dll-ка влезет в 300-метровый жёсткий диск.
int i; int N = 10; int a = new int[N]; for (i = 0; i < N; i++) a = 1000(1.0*rand()/RAND_MAX);Тестировал алгоритм сортировки, и каждый сука раз при заполнении рандом в самом начале идёт ёбанная единица. Чё за хуйня?
>>1048682Это ГПСЧ, тут нужно задавать seed перед началом генерации. Нубы обычно берут time() или что-то вроде такого.
>>1048682Кстати говоря, у меня rand генерирует псевдорандомную последовательность длиной всего 64к (вторая строчка). Даже если будешь заполнять изображение белым шумом, будет мусор повторяющийся. Это линейный конгруэнтный метод.В делфях используется то же самое, но на 32 бита.https://ideone.com/qk2bZNА у ideone rand другой, он там тоже на 32 бита.
>>1047932Эндл - 4 клацка, портабельно (да я знаю про конверсии всякие), читаемо.Слешэн - 6 клацков.>>1047954>Можно как-то создать статический массив размера существующего динамическогоРазмерность существующего динамического известна в компайлтайме, блядь. Как ты там написал это, если ты нихуя не знаешь? Кому ты пиздишь? Щас ты покажешь код, и мы все охнем.Могу тебе класс с динамической размерностью накатать.>>1047986> размер динамического массива познается лишь на этапе исполненияВ том-то и дело, что поциенту нужна размерность (известная в компайлтайме). Он нас наёбывает, сейчас увидишь.
Как корректно дать определение полиморфизма в C++?
>>1048733>Эндл - 4 клацкаИ 9 если с std:: впереди.> Слешэн - 6 клацков.Откуда 6?> портабельноЧто ты имеешь в виду?
Привет. Начал вкатываться в плюсы, хотел скомпилировать простой хеллоу ворд в командной строке, скачал компилятор(g++), установил, в командной строке указал путь к нему в переменной path, затем пишу g++ program.cpp и мне выдает No such file or directory. Как это фиксить? С расположением файла все нормально, я закинул его на рабочий стол и в командной строке же указал путь до него. В чем причина такого поведения компилятора?
>>1047932std::endlЧто бы переносимость сходу просрать.
>>1048876> Как это фиксить?Скачать студию на первых порахмимо ньюфаг
>>1048819>Откуда 6?Два раза шифт.>>1048819>Что ты имеешь в виду?На маке - \r, на винде - \r\n. Хотя, там же, вроде ,везде конверсия, так что это неважно.>>1048876> С расположением файла все нормально, я закинул его на рабочий стол и в командной строке же указал путь до него.Если ты раньше с командной строкой дела не имел, то проще всего сделать cd до папки с программой и оттуда уже запустить gcc с именем файла без пути.
>>1048904>Два раза шифт.Ой, точно, не нужен. Занимательные обсуждения в плюсотреде.
>>1048814статический на шаблонах, динамический на вирт функциях, ad hoc через перегрузку функций3 видаизи
>>1048913кстати, эти знания никак не помогают мне найти работу и не сдохнуть от голода в будущем
>>1048904Я так и сделал, закинул файл с кодом на рабочий стол и в командной строке прописал путь до него
>>1048890Мне бы сначала cmd освоить, со студией успею разобраться.
>>1048876>>1048917уже продумал на что будешь жить следующие 10 лет, тк работу на крестах ты никак раньше не найдешь?богатые родители готовые кормить? может быть крупные суммы в банке, процент с которых позволяет жить? нет?
>>1048920Я плюсы в основном для универа осваиваю. А чтоб деньги были, подамся в бекенд, хоть и не нравится он мне.
Как так получается, что стек находится в сегмента стека, куча может занимать хоть всю виртуальную память, стек и куча растут по направлению друг к другу и стек может переполниться?Сколько места занимает стек и почему он может дорасти до границы кучи?Где в памяти располагаются стек и куча?
>>1048916Я могу сказать тебе только то, что ты написал его неправильно. Как обойти необходимость в изучении кавычек я уже сказал, ты не послушал.>>1048936> стек может переполниться?Ограничен десятком мегабайт в большинстве популярных ОС. А вообще это не про плюсы вопрос, в стандарте ничего про то, что ты спрашиваешь, нет.
>>1048933те тупипросто делай все лабы на выбранном тобой языке - явка, js, в общем все что угодно кроме крестовда, в универе любят на нем лабы даватьно как для специалиста это будет для тебя путь в никуда
Напомните, есть ли async/await в последнем стандарте крестов?
>>1048904>На маке - \rТам же UNIX, разве не \n?
>>1048933Ну и даун, тут в перезвоним-треде один крестовик устроился на работу с зп 250к.На Java и C# (не говоря уже про PHP и прочее скриптоговно) у тебя таких денег никогда не будет.А через 5 лет веб-разработки ты забудешь все алгоритмы и даже что означает буква O.
>>1048977Ну тут скорее исключение из правил.
Какие особенности возврата класса по ссылке и для чего это нужно?
>>1048977>Ну и даун, тут в перезвоним-треде один крестовик устроился на работу с зп 250к.Лол, а еще на бейсике работа есть от 80кhttps://chelyabinsk.hh.ru/vacancy/21903239?query=basicДаже в мухосранях типа челябинска! Давайте учить бейсикТы про статистическую выборку не слышал?
>>1048977>один крестовик устроился на работу с зп 250кЧистые кресты никому не нужны, их и так все знают после универа. Нужны специфические узкие знания. Эмбед, драйвера, сетевой стек, потоковое видео - опыт. За это платят. Сферический Александреску в вакууме без знания предметки никому не нужен.
>>1048966Нету.
>>1048977>Ну и даун, тут в перезвоним-треде один крестовик устроился на работу с зп 250к.Жопа_Хенка.txt>>1049003>Какие особенности возврата класса по ссылкеОсобенность в том, что, возвращая по ссылке объект на стеке, ты возвращаешь dangling reference.
>>1049012> их и так все знают после универаСи с классами знают или C++?
>>1049006За 250к вакансий вообще немного, в ДС 5 штук на C++:https://chelyabinsk.hh.ru/vacancy/22237944?query=c%2B%2Bhttps://chelyabinsk.hh.ru/vacancy/22203976?query=c%2B%2Bhttps://chelyabinsk.hh.ru/vacancy/22359974?query=c%2B%2Bhttps://chelyabinsk.hh.ru/vacancy/22282829?query=c%2B%2Bhttps://chelyabinsk.hh.ru/vacancy/22292120?query=c%2B%2BЗа 80к - навалом. Анон не говорил, что полно работы, он утверждал, якобы веб-разработка оплачивается выше, чем проекты на С++, что очевидно не так.>>1049012Ясное дело, джуна со знанием STL и Qt на такой оклад не возьмут.
>>1049306Нашел работу на крестах/qt джуном без опыта читай, на работе училРаботаю уже полгода, зп пока 40к, скоро планируется повышение.
>>1049337заюлы добавить, ДС2
>>1049338>забыл
Ребята думаю сделать прогу, которая будет расшифровывать пакеты. Например порт, входящий ip, информация о пакете и тд. Но мне кажется что такое уже есть и я буду изобретать велосипед. А если нету, то думаете взлетит?
>>1049415Зачем?
>>1049415несомненно! это будет инновационное программное обеспечение, достойное занесения в "Единый реестр российский программ", напримерты, как автор, получишь уважение мирового комьюнити, сможешь организовать стартап, монетизирующий проект, выйти на ipo и с продажи опционов получить доходы, обеспечивающие тебя до глубокой старости!
>>1049306охуенно наверное из обоссаной челябы облизыватся на >250k вакухи в great mockow :D
>>1048913Вот только это не определение
>>1045411 (OP)Да, аноны, скажите, что примерно нужно знать ии уметь чтобы вкатиться джуном? Сейчас имею только одну лабу из шараги, там простая база данных в виде дерева, поиск добавление удаление вершин-ветвей. В стль почти ничего не знаю, кроме основных структур, в бусте и подавно.
>>1049532К тёте Васе в бухгалтерию можешь устраиваться уже.
>>1049536А зачем там C++?
>>1049538Вот именно.
>>1049540Вторая часть моего вопроса состояла в том, что подучить.
>>1049566Учить нужно то, что в конторе будет. Поскольку кресты не нашли себя в какой-то конкретной сфере, подсказать тяжело.
>>1049590Я джуниором хочу стать, должна же быть какая-то общая основа.Сажа чет прилипла.
>>1049596Нету общей основы.
>>1049598Шаблоны, ООП, какие-то основные механизмы, я про это.
Анон, какие есть средства синхронизации в C++ кроме std::mutex? Где там критические секции и семафоры?Алсо, в STL есть способ синхронизировать потоки без примитивов синхронизации. Что это за способ?
>>1049599https://hh.ru/search/vacancy?text=c%2B%2B&enable_snippets=true&clusters=true&area=1&experience=noExperience&from=cluster_experience
>>1049596какие нахуй джуны на крестах в 2к17ты че, совсем тю-тю
>>1049611Бля, а как тогда вкатываться в кресты?
Анон, как это ебучее окошко output закрепить на днище?
>>1049610Там везде что-то в духе, начальные навыки c++, ни в одной вакансии я не увидел что именно они хотят. Неужели я прямо сейчас могу вписаться джуном?
>>1049620хуяк
>>1049639За еду кем хочешь можно устроиться. Гей-шлюхам ещё платят, я слышал.Я начинал работать в банке, вакансия что-то вроде такой была:https://career.ru/vacancy/22470998?query=c%2B%2BВ основном хранимки на SQL писал, C++/Delphi 50/50. Платили нихуя, только что люди там хорошие работали.Перекатываюсь на пыху в итоге. Вот такой суксесс стори.
>>1049652Да, я бы в такое вкатился, но не могу 40 часов в неделю пока работать.
>>1049418Затем что иногда это бывает нужным.Хотя функционала уже реализована в вайршаке, в общем хз>>1049420Ох(
>>1049605Бамп.
>>1049697Там особо ничего такого нет.http://en.cppreference.com/w/cpp/thread/lock_guardУ винды есть свои реализации.Ещё есть Boost.Interprocess со всеми нужными тебе структурами и даже больше.
>>1049605std::condition_variable есть как способ заблокировать один или несколько потоков до срабатывания какого-то условия в другом потоке, к примеру. Используется все так же с мьютексом, потому что так надо и во всех системах так.Критических секций нихуя нету, так что используй мьютекс с std::lock_guard и тебе не придется потом ебаться по поводу того, какого хуя у тебя все залипло в один момент (кинуло исключение, мьютекс залочен и все ... пиздос)Можешь попробовать неблокирующие методы там используются атомики. Суть, в общем, состоит в том, что треды пытаются в постоянном цикле "захватить" атомарную переременную, записав туда свой идентификатор через compare_exchange, и потом на короткое время выхватить кусок из общего ресурса и высвободить атомарную переменную. Тема хорошая, но не для всего на самом деле. Если собираешься делать какой-нибудь реактор или проактор (на stl хахаха блять, удачки), то лучше пользоваться системными примитивами синхронизациями и condition_variable.
>>1049612Сразу сеньором.
>>1048904>>Откуда 6?>Два раза шифт.Для '\n' ни разу шифт нажимать не надо.>>Что ты имеешь в виду?>На маке - \r, на винде - \r\n. Хотя, там же, вроде ,везде конверсия, так что это неважно.Вот именно. std::endl это просто '\n' плюс flush.Так что чем он портабельнее — непонятно.
>>1048904>На маке - \rКак там, в 95-м?
>>1049620>const std::string&>2k17
>>1050044 А что ещё делать?
>>1050068писать на JS
Ананасы. Поясните мне за биномиальную кучу. Понять нихуя не могу, как там вставляется этот самый единственный элемент.Вот есть такое описание:https://rsdn.org/article/submit/heap/heaps.xml#EFBAE>> Данная операция полностью повторяет логику единичного инкремента. Пусть исходная биномиальная куча состоит из 11 элементов. ... какой-то пример на довичных числах, алгоритма нет нихуя ...Как это работает? Насколько я понял, когда в биномиальную кучу добавляется элемент, он представляется вырожденным случаем биномиального дерева, имеющего только корень. Только вот так если подумать, если сращивать узлы в уже отсортированном порядке, тогда они должны выстроиться в одну длинную цепочку, разве нет?! Что за хуйня?!
>>1050068string_view.
У вас есть контейнер кучи? Чтобы можно было например корневой элемент получить, родительский или пару потомков. Без костыля типа make_heap.
>>1050164https://neerc.ifmo.ru/wiki/index.php?title=Биномиальная_куча>>1050199http://ru.cppreference.com/w/cpp/container/priority_queue
>>1050201>http://ru.cppreference.com/w/cpp/container/priority_queueОн не позволяет во внутренности смотреть. Предка и потомков не узнать.
>>1050202Стандартных реализаций нету. В бусте почти наверняка есть, но не там, где ожидаешь. В Boost.Heap нету кучи с таким функционалом, например.Можешь в Интернете поискать. Например:https://gist.github.com/truncs/1810804
>>1050175Его ещё не везде есть
>>1050199В куче же родитель легко находится. Битовый сдвиг вправо на один бит (то есть целочисленное деление на 2) даст тебе индекс родительской ноды. С потомками сложнее, нужно смотреть смещения, хотя там все подчиняется тому же закону.
>>1050175зачем
>>1050175Иди нахуй, хипстер ебаный. В стандарт завезут, тогда и буду пользоваться
>>1050307Это охуенный класс, быстро, удобно, без копирования!
>>1050329Что нового он дает относительно итераторов?
>>1050332> быстро, удобно
>>1050348А конкретнее?
>>1047915Я как-то хотел лямбда-исчисление на темплейтах сделать, но руки не дошли. Может, на выходных.
>все миллионы способов инициализации (value initialization, direct initialization, copy initialization, list initialization, aggregate initialization, reference initialization, default initialization, static initialization, dynamic initialization и наверное ещё куча)>callable>r/l/x/gl/pr-values>SFINAE>ADL>Most Vexing Parse>как инферятся типы в лямдах и просто в функциях>RTTI>std::allocator>perfect forwarding, decay и правила переводов референсов на референсы>даже простые move semanticsЯ тут подумал, и понял. Блин, реально сложный язык, в которого понапихано слишком много. Как-то не доходило раньше. Зато джоб секьюрити.
>>1050368>много>перечислил 5%>имплаинг в аналогичных языках меньше
>>1050373>аналогичных языках Это каких
>>1050262Он везде есть, просто нужно проверять __cpp_lib_experimental_string_view или __cpp_lib_string_view и инжектить алиас string_view в std в первом случае. Если совсем старый стандарт — буст/eastl/sgi stl/хуйнянейм все равно тащить придется. Ну или навелосипедить свое, там делов-то на 15 строк.>>1050310Дык уже давно.>>1050307Это намного быстрее и гибче. Как минимум именно в качестве параметра вместо строки всегда нужно принимать string_view — ибо это простой слайс (поинтер+длинна), и ты полностью контроллируешь аллокации. В твоём текущем коде при передаче вообще чего угодно у тебя будут создаваться временные объекты, которые твой код повторно аллоцирует и копирует. Олсо, для того же нужен emplace_back() у стдшных контейнеров и perfect forwarding (а еще интрузивные контейнеры) но тебе ещё рано, лол.>>1050332При чём тут итераторы-то, поехавший?
>>1050385>Как минимум именно в качестве параметра вместо строки всегда нужно принимать string_view — ибо это простой слайс (поинтер+длинна)Длинна в каких единицах? Давно кресты utf8 поддерживать начали?
>>1050368>>Most Vexing Parse>>как инферятся типы в лямдах и просто в функцияхОстальое понятно, но вот это нахуя знать-то?
>>1050391>Most Vexing ParseВсе с этим сталкивались, когда-нибудь написав new T().>как инферятся типы в лямдах и просто в функцияхДа просто так, честно, запэддить лист
>>1050390>Длинна в каких единицах?В байтах, в чём ещё в плюсах меряют длинну? Просто так уж сложилось что char = 1 байту, и теперь пойди объясни кто тут верблюд.>Давно кресты utf8 поддерживать начали?Смотря что ты имеешь в виду.Если строковые литералы — u8"דיק" ещё в 11-х завезли.Если просто строки в которые пользователь сможет срать что на иврите, что на китайском — в плюсах, опять же, все измеряется в байтах, так что абсолютно похуй что туда пихать. std::string — обычный вектор с опциональным SSO и рефкаунтом. Другое дело как ты эту хуйню обработаешь.И нахуя с ты перескочил с невладеющих строк к юникоду — ЯННП.
>>1050396>Все с этим сталкивались, когда-нибудь написав new T()Я понимаю, что мы живём в 18 веке, у нас медведи по улице ходят, но нет, нихуя.
>>1050396>>Most Vexing Parse>Все с этим сталкивались, когда-нибудь написав new T()new T() под это правило как раз не попадает.
>>1050400>В байтахИ нахуя оно тогда нужно? Чтобы работать с данными все равно нужно 3rd party представление. Твоя хуитка поможет только в случае не-nullterminated строк.
>>1050426При чём тут юникод и владеющие и невладеющие строки, поехавший. Ты меня доебал уже блядь. Одна история ахуеннее другой.Я ему про временные объекты и перформанс, он мне про нуль терминатор, ахуеть теперь.
>>1050406Всмысле T t();Ну вы поняли.
>>1050329Сразу вспомнился комикс про старый C++.
>>1050429>Я ему про временные объекты и перформансТак передавай const wchar_t* size_t
>>1050201А все, допер по поводу биномиальной кучи. Почему-то мне казалось, что деревья там плоские, как в куче, но потом стал рисовать по объяснению и понял, что все слегка иначе.
>>1050400>std::string — обычный вектор с опциональным SSO и рефкаунтом.Рефкаунт не соответствует стандарту.
>>1050458>Так передавай const wchar_t* size_tПиздец просто.Переменная длина utf8 нас не устраивает значит, а вот переменная длина utf16 это совсем другое дело, да? Не хочу совместимую с ASCII кодирование, хочу использовать windows-only решение. Пиздец ты даун. И да, напоминаю, в юникоде один символ может состоять из нескольких знаков, удачи в ковырянии вилкой всего этого добра.>>1050426>Чтобы работать с данными все равно нужно 3rd party представление.В 95% случаев вся работа заключается в достал-передал дальше. На самом деле, не так часто нужно что-то со строками ручками делать.
про Qt поясните позязя. Надо прогу с гуем сделать. Чтение с последовательного порта (виртуального, который с USB, ну да пох), рисование графиков, запись log-файлы и в базу маленько.Раньше все на дельфи7 делал - на форму мышкой-хуяк-хуяк, компонент нагуглил для com-порта, чтение списка портов с реестра, графики - еще один компонент нагуглил, базы данных - компонент интербейс-коннект и к firebird без установки серверов (портативная версия). Еще и в Excel отчетики если надо. Всё заебись за считанные часы выполняется, всё вместе пять мегабайт. Но дельфи7 же умер, это ведь говно мамонта 2002 года, без юникода, без антиалиасинга, да и вообще, сейчас опенсорс, кросс-платформа, C++14 и прочая хуйня, к тому же мне уже за 30, и пора бы уже вместо меня в этой шаражке взять малолетнего пиздюка, а они про дельфи и не знают небось.На да ладно.Сперва беру C# конечно же. Ну заебись, разобрался мало-мальски, правда в ini-файлы он что-то не умеет. Но сейчас уже 21 век, xml-костыль конечно же есть. Но, ебана, я ведь скачал Community Edition, а все равно регистрацию просит и посылает нахуй, да и при установке так систему засирает, что не по себе становится. Ладно, хуй с ней с этой хуитой от микрософт. Тем более всюду (на дваче) посирают, что говно, тяжелое и неповоротное, да и приложения нельзя свои без коммерческой лицензии распространять.Итак, беру труЪ-опенсорсный CodeLite, wxWidget, ну потрахался (какой же там уебищный GUI-дизайнер), последовательный порт через WinAPI, всё, сука, в ручную, автоподставновка через раз работает, как графики добавить, так и не понял. Хуита какая-то. Сколько гуглишь - На форумах древнее говно мамонта. Стопицот костылей, ничего простого. Либо не рисует, либо криво, либо не понять как ставить на эту версию.Еще напрягает, что установка wxWidget охуеть долгая - библиотеку то компилить надо.Радует хоть, что приложение статически собирается и весит мегайбат 7.Дальше вот нагуглил, все нормальные пацаны обоссали этот wxWidget и делают на Qt. Окей, качаю последний, 5.9.1 версия. Гуй-дизайнер заебись, редактор кода заебись, сразу есть компоненты последовательно порта и графики, которые через жопу, но вполне юзабельно. Как перенести на другой комп? О_о Ладно есть там windeployqt приблуда. Вот она мне копирнула 45 мб библиотек, кучку из 23 штук (минус папку translations) епта. Да и то три штуки пропустила (которые к mingw). На вин10 работает, на вин7 работает, а на винХР не работает, ёбана. Да, вы тут все модные продвинуетые, на core i7 и прочее. А у меня в цехе несколько десятков компов и обновлять винду там нельзя, т.к. к ним идет оборудования забугорного на миллионы денег и, вообще блядь, лучше не там ничего трогать.Что-то про статическую сборку пишут. Типа и DLL все в исполняемом файле - так то охуеть конечно, екзешник на писят метров, но зато, должно тогда на winXP запуститься. Третий день читаю форумы - всюду есть тема про старые версии Qt, а про 5.9 нихера. И так пробую, и так - на выходе какие-то компиляции целый час, а толку все равно нет - в сборках пишешь, а оно не работает. Какого хуя это не из коробки? Зачем я должен пердолится с этим?
>>1050693>Зачем я должен пердолится с этим?Любители ХР должны страдать, да...В новых студиях для компиляции под ХР у компилятора отдельный тулсет есть. Если используешь другой компилятор - хз, попробуй настройки потеребить, может там тоже есть отдельная опция для этого.Еще один вариант, взять dependency walker и просто посмотреть чего бинарнику не хватает под ХР.
>>1050641Как и SSO, только вот его ещё не везде выпилили, лол.
>>1050693статическая сборка +10мб к твоему хеловорду, ужмешь upx до 5мб. орну в голосину, если xp у тебя 32битный, а собирал под 64.
>>1050693>Community Edition, а все равно регистрацию проситОна потому и коммьюнити, что майкрософт получает твой адрес для спама.>CodeLiteОн немного забагованный, хоть в целом и работоспособен.> Как перенести на другой комп?Скомпилировать статически. Согласно LGPL ты можешь это сделать, тебе лишь нужно распространять вместе с программой объектные файлы и инструкцию о компиляции.Работа на XP связана не с видом компиляции - статика или нет. Если ты заюзаешь несовместимую функцию, у тебя не либа не подгрузится, а экзешник целиком, или баг где-то вылезет. Чтобы XP поддержать, тебе нужна какая-нибудь полубородатая версия. Последняя версия для висты - 5.6.2, например.https://wiki.qt.io/PlatformSupportИ КСТАТИ, ты можешь поставить этот 5.5.* и последний кутыкреактор, и оно будет работать.>>1050701>Еще один вариант, взять dependency walker и просто посмотреть чего бинарнику не хватает под ХР. Бинарнику под XP не хватает того, что Qt Oy не тестила Qt под XP, импортов не хватает и прочее.
>>1050674>Пиздец просто.Ебаный дебил, замени на свою любимый char, но смысл ты понял. Нахуй разводить этот троллинг тупостью? пиздец wchar_t у него windows-only, передавай бате что надо было юзать гандоны>В 95% случаев вся работа заключается в достал-передал дальше.Ты просто нахуй конченный. Как и вся та орда дебилов которая тащит свое говно в стандарт, уже собрались CGI и curses тащить, ага блять.мимоаллигатор
>>1050727>пиздец wchar_t у него windows-onlyА что это не так? Или может быть есть какие-то достоинства использования UTF16 не на windows? С удовольствием послушаю эти охуительные истории>>1050727>Ты просто нахуй конченный. Ты членораздельно можешь сказать с чем ты не согласен? Нахуя тебе отдельные символы? Что ты с ними собрался делать? >Как и вся та орда дебилов которая тащит свое говно в стандарт, уже собрались CGI и curses тащить, ага блять.В стандарт ничего не тащат - попопок хуевая стандартная библиотека, ни как в дотнете/жабе, покпокпок, могли бы и в стандарт добавить либу чтобы жопу вытирала/окошки рисовала, покпокпокВ стандарт добавляют новые либы - покпокпок, они что поехали все это в стандарт тащить, горшочек не вари, спасите-помогите, убивают.Полностью с тобой согласен, братишка, ТОЛЬКО ПРОИГРАЛИ
>>1050760>UTF16>wchar_tОхуительные истории.>Нахуя тебе отдельные символы?Ну я блять даже не знаю нахуй как тебе и объяснить. Это походу особый клинический случай. Если тебе символы не нужны таскай все в voidptr. все тот же аллигатор
>>1050693Хули ты не смог то там. Для твоего случая, хватит с лихвой WxWidgets или fltk какой. Если ты не хочешь тянуть всего мамонта в лице Qt, придется тебе использовать эти либы.Естественно, нужно хотя бы понимать, как устроен интерфейс. Ведь по сути, генератор форм Qt на выхлопе делает класс виджета с набором объектов, ничего больше. Таким же образом и ты должен создать гуй. Если ты не понимешь ООП и что из себя представляет окно или форма, то тебе надо возвращаться в свой делфи, чтобы там мышкой программировать или все же осилить как создавать виды.
Как ответить на вопрос "в чем самая суть полиморфизма"?Я сказал вот что:- про реализацию различного поведения одной и той же функции у обектов разных типов- про удобство работы с иерархией классов через указатель или ссылку на базовый класс- про рефакторинг: замена условной логики полиморфизмомНо оказалось, что я не сказал самую СУТЬ.
>>1050693Не связывайся со статической линковкой, для проворачивания этого фокуса кьют понадобится собирать руками.
>>1050859Так, падажжи, но вот у меня стоит Qt из установщика, внутри либы, что не так?
>>1050693И еще, тебя ждет веселье со старыми дровами для твоего драйвера виртуального порта. Когда я работал с CP2101 пришлось специально для ХР отключать автоопределение подключения через винапишные сигналы, глючило дико. Особенно мне нравилось выскакивающее окошко "Устройство не готово; Открыта дверца" при отсоединении кабеля. Кстати, делал такие штуки и на .NET, и на Qt, на первом больше гемора с портом было.
>>1050860Статически они не слинкуются. Для этого тебе понадобится скачать сорцы, вызвать configure со --static и собрать. Ман http://doc.qt.io/qt-5/windows-deployment.html говорит, что держать две версии в одном месте одновременно не выйдет.
>>1050866Только за коммерческую копию кути заплатить не забудь, статическая линковка это тебе не хуй собачий.
>>1050702>Как и SSOСхера ли это?
>>1050871Qt под LGPL, а LGPL позволяет линковаться статически и распространять только объектные файлы, без сорцев.https://www.gnu.org/licenses/gpl-faq.en.html#LGPLStaticVsDynamic
>>1050925Зайди на сайт кути и прочитай условия. Она бесплатна пока юзер может выковырять и поменять её исполняемые файлы, что при статической линковке без исходников не очень хорошо получается.>>1050904В одном из прошлых тредов даже кидали выдержку из стандарта, поищи.
>>1050931>Зайди на сайт кути и прочитай условия. Она бесплатна пока юзер может выковырять и поменять её исполняемые файлы, что при статической линковке без исходников не очень хорошо получается.Сто раз обсосано на форуме qt.io, линковать статически и распространять объектники МОЖНО.
>>1050937>Сто раз обсосано на форуме qt.ioПруфы где?
>>1050931>Зайди на сайт кути и прочитай условия.Как действует LGPL определяют не Qt-шники.> Она бесплатна пока юзер может выковырять и поменять её исполняемые файлы, что при статической линковке без исходников не очень хорошо получается.Для линковки с другой версией библиотеки достаточно распространять только объектные файлы.
>>1050931>В одном из прошлых тредов даже кидали выдержку из стандарта, поищи.Ты скозал — ты тащи пруфы.
>>1050853Бамп.
>>1050968Что ты хочешь услышать? Это философский вопрос на который есть тысячи ответов и все правильные.
>>1050944Тебе интересно — ты и ищи их, мне чота влом.>>1050943Линковаться статически чтобы тащить с собой хуй пойми сколько неслинкованного дерьма, половина из которого этим самыи линкером ещё и будет вырезана — бесценно.>>1050853Скажи интервьюеру что он абстрактный пидарас, либо просто ответь что это дохуя гибко. Что это значит — пусть сам думает с такими вопросами.
>>1051002>Тебе интересно — ты и ищи их, мне чота влом.В общем, слив защитан.>Линковаться статически чтобы тащить с собой Ничего тащить с собой не надо. GPL не заставляет распространять исходники с программой, а только предъявлять их по требованию (высылать диск с ними или ссылку давать на то, где они лежат). LGPL, думаю, так же.А ценно или бесценно — похуй, главное ясно, что для статической линковки коммерческая лицензия на Qt не обязательна.
>>1050853Ты всё о динамическом полиморфизме, подумай о статическом.Полиморфизм - инструмент единоразового описания алгоритмов в отрыве от конкретных применений.
>>1051025Меня спрашивают про динамический.
>>1051024>В общем, слив защитан.С такой логикой ты это, давай или откопай параграф стандарта, где обязуют гарантировать sso.
>>1051040При чём тут обязуют, дебил?
>>1051044Давай-ка для начала прочитай сообщение на которое триггернулся.
>>1051045Дебил, ты покажешь, где SSO не соответствует стандарту, наконец?
>>1051050>>1051045>>1051044Не знаю в чем суть вашей спецолимпиады, но очевидно:>Every object of type basic_string<charT,traits, Allocator> shall use an object of type Allocator to allocate and free storage for the containedcharT objects as needed. The Allocator object used shall be obtained as described in 23.2.1.Использование статически аллоцированного объекта для оптимизации нарушает гарантию выделения всех строк в переданном аллокаторе.
>>1051053>Использование статически аллоцированного объекта для оптимизации нарушает гарантию выделения всех строк в переданном аллокаторе.Неуважаемый дебил №2, про "всех" там ни слова не написано. Там написано "as needed". Перевод сам найдёшь или тебе принести?
>>1051056>Every object of type basic_string<charT,traits, Allocator shall use an object of type Allocator to allocate and free storageПередай своей учительнице английского что она падшая женщина.
Да, сорри, я наверно слишком сложно для тебя написал, давай по проще, трактуется это так: не может существовать такого объекта std::string данные которого не находятся в пуле предоставленного аллокатора.
>>1051061Там такого не написано, не пизди.Написано, что аллокатором нужно выделять память при необходимости (as needed). Пока необходимости нет — выделять не надо.
>>1051062Я же тебе жирным выделил что every, shall use. Если у объекта есть данные во владении - они needed. Зачем ты продолжаешь защищать свою ошибку?
>>1051063>Я же тебе жирным выделил что every, shall use.Ну да, каждый basic_string<charT, traits, Allocator> должен использовать аллокатор для выделения и освобождения памяти для charT, при необходимости.Про "для выделения всех строк", как ты написал в >>1051053 , там не написано. Единственное слово, которое можно было бы перевести как "все" это Every, но оно переводится здесь как "каждый" и относится к объектам типа basic_string<...>, а не к хранимым в них charT.> Если у объекта есть данные во владении - они needed. Зачем ты продолжаешь защищать свою ошибку?Зачем ты продолжаешь вырывать фразы и слова из контекста и фантазировать? Написано, что память надо выделять при необходимости (as needed). А не то, что хранимые charT внутри needed.
>>1051065>но оно переводится здесь как "каждый" Да даже если ты переведёшь как "Все объекты типа basic_string<...>", то по-прежнему "все" будет относиться к basic_string<...>, а не к хранимым там charT.
>>1051066Естественно, относится к basic_string, которые должны по требованию должны выделять пул предоставленным аллокатором. А, возможно ты не очень понимаешь какой мета контекст у аллокатора в стандарте:Containers are objects that store other objects. They control allocation and deallocation of these objectsthrough constructors, destructors, insert and erase operations.For the components affected by this subclause that declare an allocator_type, objects stored in thesecomponents shall be constructed using the allocator_traits<allocator_type>::construct function anddestroyed using the allocator_traits<allocator_type>::destroy function (20.8.8.2). These functionsare called only for the container’s element type, not for internal types used by the container. [ Note: Thismeans, for example, that a node-based container might need to construct nodes containing aligned buffersand call construct to place the element into the buffer. — end note ]Unless otherwise specified, all containers defined in this clause obtain memory using an allocator Попробуй воспринять в этом контексте то что тебе пытались выше объяснить, возможно ты поймешь.
>>1051067В процитированном тобой [container.requirements.general]/3 говорится про construct и destroy. Что-то запрещает делать construct и destroy в SSO-буфере?> Unless otherwise specified, all containers defined in this clause obtain memory using an allocator Список "all containers defined in this clause" прикладываю картинкой. Да даже если бы <string> сюда относился, то тут написано, что получать память нужно с использованием аллокатора. Использовать память внутри объекта это никак не запрещает.> Попробуй воспринять в этом контексте то что тебе пытались выше объяснитьНе собираюсь воспринимать <string> в контексте, который к <string> не относится.
>>1051070>Не собираюсь воспринимать <string> в контексте, который к <string> не относится.Твои проблемы. Сколько я понимаю выше по треду ты спрашивал почему нет SSO в мейнстримных имплементациях, пусть останется тайной лол.
>>1051070Алсо, чтобы у тебя еще остался шанс:>The Allocator object used shall be obtained as described in 23.2.1.Строка не является контейнером (наркоманы, лол), но во всех своих аспектах ссылается на клаузы контейнеров.
>>1051071>>Не собираюсь воспринимать <string> в контексте, который к <string> не относится.>Твои проблемы.Да нет, твои. Это ты полез тыкать меня в правила, которые относятся к контейнерам в таблице. Где нет <string>.> Сколько я понимаю выше по треду ты спрашивал почему нет SSO в мейнстримных имплементацияхЛолчто? В libstdc++ (GCC) SSO, в libc++ (clang) SSO, в MSVC SSO.>>1051072>Строка не является контейнером (наркоманы, лол), но во всех своих аспектах ссылается на клаузы контейнеров.Где необходимо — пусть ссылается. Главное, что глава Containers не ссылается на <string> в таблице контейнеров.
Java боярин itt. Поясните за статический анализ кода на c++, почему в различных ide для c++ нет таких же мощных анализатор как для java/c#? Что думаете насчёт rust?
>>1051088Так кучи же их, начиная от clang tidy и cppcheck до PVS. Кстати, о каких различных IDE ты говоришь, небось об Idea и VS, так первые с давних времен свою IDE под жабу пилили, так что времени добавить анализатор было предостаточно, а вторые делает майкрософт, который и создавал язык c#, так что неудивительно, что поддержка этого и там есть. А что ты хотел услышать?!
>>1051088Потомучто анализировать шаблонный а\параметр шаблона - увлекательное занятие без концептов
>>1051088>статический анализ кода При чем тут он?
>>1051106Я пробовал CLion для hello world. Так вот, анализатор там пиздец какой скудный. После java - будто перекрыли кислород.
>>1051088>Что думаете насчёт rust?Там вообще никаких иде нет.Может быть жетбраинс когда нибудь выпустит свою иде для него, если он взлетит
>>1051242Плагин есть.
>>1051244Плагин != иде.Вот когда полноценную иде выпустят, тогда и поговорим.
>>1051236Свой там слабенький да. clang tidy тоже не очень, нужно по коду гонять сторонними утилитами, заточенными специально под это дело, если уж на то пошло.
>>1050938В пизде, уёбок.https://forum.qt.io/search?term=lgpl%20static%20linking&in=posts&sortBy=relevance&sortDirection=&showAs=posts>>1051063>Если у объекта есть данные во владении - они needed.Какой упёртый! Если данные можно разместить в объекте, то выделение памяти не needed.>>1051070>Что-то запрещает делать construct и destroy в SSO-буфере?Какбе объект сам-то знает о том, что строка в нём находится. Это всего лишь деталь реализации, а не гарантированный UB.>>1051088>Поясните за статический анализ кода на c++Часть задач анализатора выполняется компилятором и стандартом языка.
>>1051248Эм. Та же андроид студия - просто набор плагинов. Что изменится если запилить standalone-сборку с Rust-плагином?И как раз в начале августа JetBrains объявила официальную поддержку Rust-плагина (до этого это был типа pet-проект пары чуваков из JB).
Как собрать статическую библиотеку pdcurses при помощи VS2015? Запускаю nmake -f vcwin32.mak и нихуя: nmake не найден. В переменной окружения прописываю путь к nmake, но теперь при компиляции не найдены заголовочники. Редактирую makefile и прописываю пути к папкам include, однако теперь не находится stddef.h. Что за хуйня?
>>1051381>Если данные можно разместить в объекте, то выделение памяти не needed.В приличных языках за такое ебут раскаленной кочергой пока до кукаретеков не дойдет. Но это кресты, тут всем похуй лол, на фоне общего пиздеца никто и не заметит.
>>1050853Ну, я не знаю. Оно мокируется и это можно тестить? Кто-то юнит-тестит плюсные проекты?
>>1051124>без концептовКонцепты когда
>>1051434Нужно открыть консоль через ярлык в папке студии, он туда все пути загонит.
Как из под линукса задеплоить экзешник через g++?
>>1051735Там mingw тулчейн должен быть. Все, дальше сам. Надеюсь про CFLAGS, CXXFLAGS, CC, CXX, LDFLAGS ты уже знаешь
>>1051735http://forums.codeblocks.org/index.php?topic=3343.0
>>1051654Стандарте так в 23-м или 26-м.>>1051651>Кто-то юнит-тестит плюсные проекты?Да все. Это же такая бюджетная защита от дебила, и кодревьюить надо втрижды меньше.
>>1051248Лолшто? Иди посмотри на плагин для какой нибудь скалы или котлина — там фич больше чем для шарпа у какой нибудь студии, без шюток. И вообще открой, сука, доку по архитектуре идеи — это одна большая платформа для плагинов, в которой даже жаву уже вынесли в плагин, что как бы намекает.Отдельные иде они выпускают только когда есть конторы которые будут закупать лицензии сотнями и тысячами, чтобы потом выпускать мажорные релизы по 3 раза в год и предлагать обновлять лицензии с 20% скидкой как они это регулярно делают, эти же похуеитрожопее челиков из PVS.
>>1052127>Стандарте так в 23-м или 26-м.Из драфта 20-го их уже удалили? Ведь только что добавили.
>>1052152Нету ещё никакого драфта 20-го стандарта, коммитет только 17-й закончил. Есть кучка пропозалов которые хуй знает ещё сколько мусолить будут.Они там пол века решают экспортировать макросы или нет, дальше сам можешь закончить мою прошлую мысль.
>>1052168>Нету ещё никакого драфта 20-го стандарта?!
>>1052170Лол, скинь ссылку.Недавно же только финальное собрание коммитета было и принятие 17-х плюсов.Хотя энивей — даже наличие в драфте ничего не меняет.
>>1052182https://herbsutter.com/2017/07/15/trip-report-summer-iso-c-standards-meeting-toronto/
>>1052047Благодарю
>>1051533Это называется "абстракция". У объекта есть члены и аллокатор, а что он с ними делает - тебя ебать не должно, если ты не опираешься на UB и ID.
Двач, есть ли тут такие-же говноеды как я и знает ли кто как в gdb параше посмотреть значение глобальной переменной?
>>1045411 (OP)Решил чуть чуть подкопнуть в сторону ассемблера, чтобы более менее понять как работают функции. Хотел спросить, указатель из записи стека ( второе имя для кадра стека ) и base pointer это одно и тоже?
>>1045411 (OP)Посоветуйте на ведро ньюфагу чтобы код писать, можно даже без компиляции наверное, главное чтобы подсветка была.Мне бы на досуге код писать, а не капчи вводить, или это плохая затея?Ведро 4.4, рут есть
>>1052571pochemu ty takoy ueban i ne mozhesh poogoogleet'?> filename.cppint x; // global'naya peremennaya, obyavlennaya v filerelated> p 'filename.cpp'::x
>>1052442>крестодаун не может даже примерно предсказать размер своих объектов>абстракция, пацаны, вы че)))
>>1053045зачем тебе нужны примерные размеры твоих объектов? тебе нужны размеры объектов - объектов, или размер данных которые он попросил у аллокатора?что не так с needed? про small string optimization не слышали? или если строчка пустая, то она всё-равно должна выделить ровно 1 байт под зиротерминатор?
>>1052985фгуглолсо ideone.com и куча других.>>1053045Погуглил за тебя.https://stackoverflow.com/questions/21694302/what-are-the-mechanics-of-short-string-optimization-in-libc
>>1053206Спасибо за пруф, никогда не думал что в крестах все настолько хуево. мимо-си-боярин
>>1053175Ну, давай рассмотрим типовую задачу которая обычная успешная крестомакака может пилить, если она не QT-говноед. Есть очередная биткоин/хуеин или просто биржа где-нибудь в штатах и ты галеришь для нее бек. Тебе надо обеспечить защиту строковых данных от любой коррупции памяти, переполнения и прочего, при условии что ты ее отдаешь в третьи руки, возможно даже в объектник, или того хуже интерпретатор другого языка. Расскажи мне как ты это сделаешь без строкового пула.
>>1053237Велосипедить ¯ \ _ (ツ) _ / ¯. Или std::string должна решать вообще все задачи, которые только могут быть в мире?
>>1053252А какие вообще задачи ты решаешь с помощью std::string в таком случае? Моя задача более чем типовая судя по StackOverflow и собственному опыту, лол. Мне казалось что кроме обработки данных на крестах/сях писать что-либо уже настолько моветон что и проектов таких нет.
>>1053254Ну, std::string s;std::cin >> s;std::cout << "Hello " << s << std::endl;например)
Куда идти за туториалом, чтобы сделать так, чтобы компьютер печатал сам текст? То есть сам нажимал кнопки и шиндоус реагировал.
>>1053237Никакой метод std::string не предусматривает то, что тебе нужно знать про SSO. Задачку рассмотрели, ты опять соснул.>>1053281>сделать так, чтобы компьютер печатал сам текст? То есть сам нажимал кнопки и шиндоус реагировал.Какой ты мимимишный, абрикосик прям.
>>1053284Ты на стартап то ( >>1053275 ) инвесторов уже нашел? Первое сентября скоро, можешь не успеть!
>>1053284>>1053281Ок, уже загуглил keybd_event(Буква, 0,0,0);
>>1053286на кикстартере уже $0,3 собрал!
>>1053286SSO абсолютно прозрачна и соответствует стандарту. Если ты можешь найти пример использования string без UB и ID, в котором SSO что-то ломает - заноси.
>>1053229Сибоярин хоть когда-нибудь смотрел на вывод компилятора в ассмблере и все те охуительные трюки, которые используются для ускорения программ на C? SSO - это название техники, которую применяют компиляторы, и тебе, как пользователю языка, ВООБЩЕ похуй на неё.
>>1053237Блять, неужели даже коррапт стека не так критичен, как коррапт памяти в которой лежат строчки?
>>1053445Да, я замечал такую хуйню что нонешним макакам вообще на всё похуй. Потом полны треды жопной боли что опять дали пинка под зад.
>>1053445>SSO - это название техники, которую применяют компиляторыТы совсем долбоёб или прикалываешься?
>>1053254>Моя задача более чем типовая судя по StackOverflow и собственному опыту, лол.Охотно тебе верю. А у тех кто программирует графику совсем другие типовые задачи. И у тех кто драйвера для железок. И у тех кто UI. В каждой предметной области есть свои типовые задачи. Какой сюрприз да? Твоя ошибка в том что ты свой опыт распостраняешь на всю индустрию. Это во-первых.Во-вторых, какай у языка лозунг? Не платишь за то что не используешь. Так почему все должны отказаться от удобной оптимизации ради тебя?Ну и в-третьих, даже в твоем случае, это нужно только для части строк, так ведь? Т.Е. по хорошему для часть строк - свой самописный класс с пулом. А другая часть стандартная которой все это не нужно, и которая работает быстрее благодаря SSO.
>>1053456Все критично, вообще любое повреждение данных. И тебе надо об этом орать в общую шину, что макака сидящая дальше данные портит, иначе тебе пиздец.Просто память ты можешь отследить (примерно так же как обычный CrtMemoryCheck() в винде), а стек - хуй.>>1053467Нет, не для части - для всех. Кстати из всех кого ты перечислил работать с пользовательскими строковыми данными будут и только в дебаге... а хуй знает, может игроделы, в теории, но это должна быть какая то совсем уж унылая шарага где такие вещи в ресурсах не хронятся.
>>1053457КОНЕЧНО ЖЕ ты можешь показать пример того, как SSO приводит к ошибке в программе, не использующей UB и ID, верно?>>1053459Сделай утверждение, правильность которого можно проверить, не задавай мне пустые вопросы. Слабо?
>>1053491>ты совсем долбоеб>не задавай мне тупые вопросы!!!!Ебать у вас тут весело, давно я в тематике так не проигрывал.
>>1053491Ок, видимо, ты долбоёб."SSO применяют компиляторы" — надо же такую хуйню сказануть.
>>1053491>IDЭто что за покемон?
>>1053511Implementation Defined (behaviour)
Привет анон я дотянул конца за яйца лабы до конца лета и у меня наебнулся ноут, нет возможности поставить VSАнон предлагаю 2000 рублей за 2лабы и 1 игру C++/CLI ООП.Вот сами задания:-------------------1. Разработать класс «Множество» на основе массива с полной системой функций, включая интерфейсную функцию просмотра содержимого множества.2. Используя множество как структуру хранения данных, решить прикладную задачу.Дана последовательность символов. Сформировать множество, представляющее собой частотный алфавит указанной последовательности.---------------------------------------------------Прикладная задача (использовать хэш-таблицы)Кот Матроскин владеет стадом коров, а также организовал производство молока, сметаны, творога, масла. Ежедневно он учитывает дневной сбыт каждого вида продукции, причем цены товара у Матроскина могут изменяться, и цены ему приходится тоже ежедневно записывать.В конце месяца необходимо подвести итог по результатам торговли, чтобы выяснить, какая продукция пользуется наибольшим и наименьшим спросом, а также какая продукция приносит наибольшую и наименьшую прибыль.В конце года необходимо решить ту же задачу для подведения итогов года.Задание1. Разработать сущности для сохранения необходимой информации, реализовать необходимые методы.2. Организовать список записей на основе одного из контейнерных типов Net.Framework, реализовать интерфейс для добавления и отображения записей. Сохранить список в текстовом файле.3. Реализовать интерфейс для ежедневного ввода данных.Реализовать механизм подведения итогов и вывод результатов, результаты сохранить в текстовом файле--------------------------Написать программу — игру тренажер клавиатуры «Гонки за хвостом».С нормальным ООП, использовать структуры данныхКто у умеет писать хороший код на c++/cli и хочет заработать пишите в телегу @totldsнужно как можно быстрее, дедлайн 2 сентября.
>>1053961> c++/cli >2 к10к за все и поговорим.
>>1053961>«Гонки за хвостом»Гугл не знает, что это.
>>1053961Тебе рановато отсылать тестовые задания, когда ты даже нихуя не понимаешь о чём пишешь.
>>1053961>c++/cliНайс лабы, где учишься?
>>1053501STL в большнистве случаев специфична для компилятора, и на совместимость ABI сгружены болты. Да, я назвал оптимизацию, которая должна быть частью STL, оптимизацией компилятора, я жестоко ошибся. Да, ты долбоёб.>>1053961> c++/cli Нахуй и в пизду.
>>1054280Обосрался — обтекай.
>>1053961Никто это говно за 2к делать не будет, это смешно.
Что за унылый тред? Хоть бы за memory model посрались.
>>1053961За 2к ты можешь купить час моего внерабочего времени. За этот час, ты не сможешь даже описать чего именно от тебя хотят. Потому что хуйня вроде "гонки за хвостом" - какая-то местечковая параша в голове твоего препода.
>>1054387Зачем это в треде понимает 1.5 человека, еще 1.5 делает вид что понимает итого выйдет унылый срач полный маняфантазий.
>>1054465>это в треде понимает 1.5 человекаПочему? Это же база.
А знаете, что я заметилВ остальных тредах прикладные задачи решают, а в этом в основном борятся с языком и проблемами с памятью
>>1054571Ну всё правильно. Ведь кресты - язык без задач.
Ананасы, помоите советом. Мне надо написать GUI с ползунком, значение с этого ползунка будут передаваться в консоль игры.нужно, чтобы эта хуйня была в форме экзешника, и при запуске экзешника запускался еще и экзешник игры. Какую либу использовать для гуи, как замутить экзешник? Не обоссывайте, суки
>>1054629> Ведь кресты - язык без задач.ты хотел сказать что пад него нет специально выдуманных задач, как для других языкоф
>>1054647Я знаю, как сделать это в Qt. Как сделать ползунок - сам догадаешься, а как передать:http://doc.qt.io/qt-5/qprocess.html#communicating-via-channelshttp://doc.qt.io/qt-5/qprocess.html#setInputChannelModehttp://doc.qt.io/qt-5/qprocess.html#writeData Олсо, там традиционно есть еботня с текстовыми кодировками - нужно писать в той же кодировке, в которой читает программа. Самый простой способ сделать это - не менять локаль ни в одной программе, ни в другой.Либо, если игре не нужно принимать текстовые команды вообще, ты можешь поменять режим записи и чтения на бинарный в обоих программах (чтобы \r и \n никогда нигде не конвертировалось) и писать числа по какому-нибудь простому протоколу:https://stackoverflow.com/questions/1598985/c-read-binary-stdincin и cout получают свои данные через stdin и stdout, поэтому нужно поменять режим в stdin и stdout. Читать из cin надо с помощью cin.read(), писать - с помощью cout.write(), использовать sizeof() в обоих случаях.>>1054387http://en.cppreference.com/w/cpp/language/memory_modelПрочитал. Зачем сраться? Есть модель памяти, которой все придерживаются, и модель параллельного взаимодействия, применение которой минимизирует оверхед, не вижу никакой проблемы в этом. Есть задачи, в которых это неоптимально?
>>1054726>Прочитал. Зачем сраться?Я имел в виду срач не о самой модели памяти, а о том, чтобы пришёл какой-нибудь ньюфаг с её непониманием и начал молоть ерунду. Было бы весело покормить его г-ном.
>>1054895зачем в std контейнерах потокобезопасность? почему нельзя сказать "если вы std string в разных потоках используете, это UB, если вы в потоках используете atomic<string> то всё ок"?
>>1054918Ты типа решил нарочно прикинуться тупым ньюфагом? Нарочно — это не интересно.
>>1054918>> если вы в потоках используете atomic<string> >> atomic<string> Приехали...
>>1054918>atomic<string>>std::atomic may be instantiated with any TriviallyCopyable type T:
>>1054928Как-то этот may be слишком неуверенно звучит. Вот так лучше:The template argument for T shall be trivially copyable-- http://eel.is/c++draft/atomics.types.generic#1
>>1054921Нет, я правда не знаю ничего про многопоточность в с++
>>1054961Тогда рассказываю.0) Не бывает абстрактной thread-безопасности для контейнера, может быть лишь конкреный набор безопасных операций с предсказуемым результатом.1) std::atomic - это инструмент для ускорения параллельных программ. Мьютексы - довольно дорогая операция, и в некоторых случаях ты можешь сделать алгоритм взаимодействия без мьютексов вообще, используя atomic. При этом atomic не использует мьютексы не во всех случаях, а только тогда, когда это возможно. То есть, если ты захочешь сделать atomic<array<char,90001>load(), то внутри будет использован мьютекс почти на всех ЦП.2) std::atomic<string> - это фингербокс, так как единственная полезная операция, которая становится безопасной по сравнению со string - это swap (exchange). У atomic есть лишь ограниченный набор операций, которые становятся безопасными, читай:http://en.cppreference.com/w/cpp/atomic/Конкатенация строк? Получаешь UB - перемещается область данных из-за реаллока, за тебя никто это проверять не будет. Хочешь search&replace - получаешь data race, если другой тред пишет в строку. Когда ты пишешь atomic<string>.load(), ты получаешь обычную копию строки, которая использует ту же динамическую область данных.3) как я уже сказал, просто потокобезности не бывает, есть определённый набор безопасных операций. Потокобезопасность контейнеров максимально примитивна - она означает то, что если разные треды используют строго разные элементы, то нету data race.http://eel.is/c++draft/container.requirements.dataraces#2Ну и ещё некоторые требования:http://eel.is/c++draft/res.on.data.racesкоторые обозначают самую милипиздрическую потокобезопасность - то есть, ты гарантированно не отстрелишь ногу, пока ты ничего не делаешь.
Анон, такой вот вопрос про наследование.Имеется базовый класс и несколько наследуемых от него.В базовом классе есть функция Touch которая принимает указатель на базовый класс пикрелейтед.В наследниках эта функция как-то определяется по своему.Для кого-то функция не будет делать ничего, например.Так вот суть вопроса.Можно ли как-нибудь сделать идентификацию типа чтобы избежать динамик_каста?Ну или сделать виртуальную функцию которая бы возвращала имя класса.То есть сделать что-то такое https://pastebin.com/qYASThE5 ?
>>1055149> это инструмент для ускорения параллельныхЭто инструмент для написания параллельных программ, вот обчитаются такой хуйни и потом городят.>>1055182Нет. Вернее можно, но проще и быстрее не станет. Гугли multidispatch.
>>1055188>Это инструмент для написания параллельных программ, вот обчитаются такой хуйни и потом городят.Там дальше в посте объяснение этого утверждения, так что иди нахуй.>>1055182>чтобы избежать динамик_каста?Нахуя? Если ты уже проверил динамический тип, ты можешь использовать статический каст, так как динамический - это проверка RTTI и статический каст. И даже в этом случае - нахуя?>Можно ли как-нибудь сделать идентификацию типа enum class в каждой корневой базе сделай, только компилятор делает примерно то же самое для RTTI, так что ты только свой велосипед городишь.
>>1055437>enum class в каждой корневой базе сделай, только компилятор делает примерно то же самое для RTTI, так что ты только свой велосипед городишь.Загугли llvm style rtti, у них была статья об этом в их доках в которой рассказывается что и как, и почему ты хуйню сморозил.
Какая же уёбищная с точки зрения UI новая капча...
>>1055182Спустя сутки я так и не понял, что ты хочешь сделать. То, что ты говоришь - один в один причина для использования виртуальных функций, где там у тебя динамик-каст-то? Ты хочешь избежать милипиздрического оверхеда виртуальных функций?>>1055572>Загугли llvm style rttiЗагуглил - ёбаная каша для создания багов с максимальной производительностью. Ты хочешь сказать, что то, что я предложил - это оно? Ну и ладно, посыл тот же - вопрос ОПа нихуя не понятен.
>>1055618Да, это оно.И если разработчики одного из главных (в мире ойти гигиантов — главного) компилятора считают что это может чувствительно просадить перформанс и ради этого месят подобную лапшу (и запрещают в своём кодстайле использовать RTTI c dynamic_сast и прочим, как и гугловцы) — мне кажется они что-то да знают.Бля, я с этой капчей скоро снова считать без калькулятора научусь, лул.
>>1055574Я бы сказал хуёвая...
>>1055149>std::atomic - это инструмент для ускорения параллельных программ.>>1055188>Это инструмент для написания параллельных программДва долбоеба подряд.
>>1055663>что это может чувствительно просадить перформанс Что угодно может просадить перформанс.>мне кажетсяТебе кажется, а в статье конкретно написано, что нужно это для быстрого динамик_каста, для специализации функций под разные динамические типы аргумента это нах не нужно, достаточно свитча по hash_code из type_info и reinterpret_cast (видимо, ОПу вопроса это и нужно, но хуй дождёшься его).Что там у них за юзкейс, в котором обязательно нужно использовать кучу кода с огромными возможностями для багов (инбифо есть тулза) - хуй знает, рыть исходники я не буду.>>1055703И тут ты рассказываешь о том, зачем тебе нужны атомарные операции с объектами, которые используются в одном потоке.
>>1055769>Что там у них за юзкейс, в котором обязательно нужно использовать кучу кода с огромными возможностями для багов (инбифо есть тулза) - хуй знает, рыть исходники я не будуНу тогда я тебе, гению, подскажу. Они пишут компиляторы, и им нужно AST составлять, причём по которому нужно очень быстро бегать. Когда у тебя только от одного ебаного <iostream> 40+ к нод (попробуй шланг с -ast-dump на хэловорд натравить) — дохуя весело наверно это дело обходить по 5 раз (надеюсь зачем это делать сам догадаешься?).Хуй знает какие тут могут быть баги. Допустить опечатку в названии енума?А вообще, я сейчас 5 раз перечитал вопрос того пацан и понял что он ебётся со стеной и ему тупо нужно почитать про паттерн посетитель (благо в плюсах на шаблонах его можно сделать без виртуальных функций, привет буст, гы).
>>1055967>Хуй знает какие тут могут быть баги. Допустить опечатку в названии енума?Ты сам-то читал статью, блядь?https://llvm.org/docs/HowToSetUpLLVMStyleRTTI.html>Ну тогда я тебе, гению, подскажу. Они пишут компиляторы, и им нужно AST составлять, причём по которому нужно очень быстро бегать. Когда у тебя только от одного ебаного <iostream> 40+ к нод (попробуй шланг с -ast-dump на хэловорд натравить) — дохуя весело наверно это дело обходить по 5 раз (надеюсь зачем это делать сам догадаешься?).О, совсем забыл, я хотел сегодня компилятор написать!
>>1056013Читал, и не понял нахуя сравнивать с какими-то усреднёнными значениями из енума. Единственный непонятный и спорный момент.>О, совсем забыл, я хотел сегодня компилятор написать!Ну вот ты сам сказал — что ты безграмотное хуйло, ни разу не сталкивавшееся с необходимостью построения кучи древовидного говна, которое встречается почти везде в том или ином виде кроме гуй-кружошлёпства мб. Ведь мало оверхеда от того что эту парашу нельзя ужать в единый массив, и она в памяти растекается как жир итт и примерно никогда не попадает в кэш, нужно ещё виртуальных вызовов и динамик каста насобачить.
>>1055769Это называется примитивом синхронизации, неуч. Многие параллельные операции можно делать и без синхронизации.Про инструмент и ускорение это какое-нибудь Intel Parallel Studio.
>c+17>static const inline std::string kek{“lul”};Дожили до шарпа, блэт.
>>1056154Скоро (через год) во всех (на самом деле нет) компиляторах мира (на самом деле только Земли)
>>1056170Это уже во всех кроме отсталой хуиты вроде оракловского и интеловского компилеров которые в своих вселенных живут.
Поясните пожалуйста кто-нибудь залетному, зачем нужно писать везде using namespace std? Я пытался гуглить, но все хором пишут ыыы эээ ето пространство имен. Блядь, пиздос, да оно понятно из названия что это пространство имен, мне уже даже похуй что такое пространство имен, скажите мне что делает конкретно std?
>>1056175это объявление импортирует объявления (имена) из пространства имен std. Все.
>>1056191Пиздос, блядь. Ну не траль плез.
>>1056199Ну, проще говоря, это делается для того, чтобы можно было выполнить unqualified name lookup. Так лучше?http://en.cppreference.com/w/cpp/language/unqualified_lookup
>>1056175Ну ебана, а как тебе объяснить что оно делает, если ты не понимаешь ничего из того, с чем оно это делает? Пока не пройдешь неймспейсы просто забей хуй и прими как должное - "надо писать это шоб та функция работала, почему - пока хз".
>>1056175А если совсем грубо объяснять:Вот ты написал класс class Huy, и хочешь, чтобы другие, когда подключали твою йоба-либу, не получали кучу ошибок из-за того, что твой класс конфликтует с их классом, который тоже называется Huy. Поэтому ты используешь неймспейс - namespace HuyLib { class Huy };Теперь, когда другие подключат твою либу, они не смогут просто сразу писать a = new Huy, потому что там, где они это пишут, нет такого имени - оно в другом пространстве имен. Чтобы оно было, надо либо явно указывать неймспейс каждый раз - HuyLib::Huy (так же, как ты можешь явно писать везде std:: для стандартных функций вместо using), либо просто написать один раз using namespace HuyLib, и теперь все имена из неймспейса становятся видны (если ты уверен, что в твоем файле нет конфликтующих имен и можно просто юзать как есть).
>>1056206>Так лучше?Да.
Как теперь в 17 студии создать пустой проект?
>>1056027>Читал, и не понял нахуя сравнивать с какими-то усреднёнными значениями из енума. Единственный непонятный и спорный момент.Динамик каст узнаёт, является ли объект запрошенным типом или имеет ли предка запрошенного типа. Числа элементам энума присваиваются строго в порядке следования. Дерево наследования с единственным наследованием ложится на шкалу значений ( порядок определяется обходом в глубину), после этого все производные типы для динамик_каста оказываются в отрезке от базы до последнего наследника, и когда запрашивается динамик_каст в некоторый класса, то статический метод этого класса проверяет, находится ли Kind конвертируемого класса в нужном отрезке.Если наследование множественное, начинается пиздец - надо сравнивать с несколькими отрезками.>>1056066Иди-ка ты нахуй, дебил. Примитив синхронизации - мьютекс. atomic можно целиком сделать через мьютексы и не определять никаких специальных операций для объектов вида сложения, инкремента, подмены или ещё чего, они определены только потому, что они довольно часто используются и на некоторых ЦП они МОГУТ быть выполнены без мьютекса. Примитивом атомик не является.>>1056254фгугл
Двач, делаю для себя небольшой кросплатформенный фреймворк, с помощью него я создаю окно и мне нужно получать от окна состояние нажатых клавиш, состояние этого окна и прочую информацию о состоянии чего либо, как я понимаю в большинстве других фреймворков система хранения и считывания этой информации реализована через события (евенты), не подскажете можно ли мне реализовать что-то другое помимо событий, или лучше просто скопировать эту систему?
>>1056275>Примитив синхронизации - мьютекс.А это где-то сказано в стандарте или это так, твоё МНЕНИЕ?
>>1056313>не подскажете можно ли мне реализовать что-то другое помимо событийМожно. Гугли в сторону functional reactive programming.
>>1056275> atomic можно целиком сделать через мьютексыЧто, даже atomic_flag?
>>1056275>Если наследование множественное, начинается пиздец - надо сравнивать с несколькими отрезками.Вот оно что, михалыч. Спасибо что выше столько капитанской фигни написал, графоман, я ж не осилил бы.
Аноны, это константный указатель на константу?foo (const int const m);Принимать должке двумерный массив созданный неизвестным образом
>>1056373А куда звёздочки делись-то?
>>1056335Да.>>1056324Показываешь место в стандарте, где написано, что atomic - это примитив - покажу, где написано, что mutex - это примитив.>>1056373Это неконстантный указатель на константный указатель на константный инт.>Принимать должке двумерный массив созданный неизвестным образомНахуй тогда указатели, делай template.template<typename T>foo(T n)Вот так ты вообще любой массив примешь, включая ассоциативный контейнер (а не только кусок памяти).
>>1056381>>делайЭто задачкау меня есть только объявление функции которую надо реализовать
>>1056381Спасибо>>1056385-кун
Хочу вкатиться на одну вакансию, где занимаются мультимедиа. Как мне за полгода освоить следующее:- работа с мультимедиа (видео, игры)- Java и андроид- отличное знание C++Что читать?
>>1056409За пол года это не особо реально.
>>1056409
>>1056381>Да.Нет.
>>1056576Минет. Не можешь написать буль с атомарными операциями на мьютексах - вон из профессии.
>>1056579Вон из профессии, дебил Operations on an object of type atomic_flag shall be lock-free.http://eel.is/c++draft/atomics.flag#2
>>1056582То есть, всё-таки atomic нужен для улучшения производительности? То есть, всё-таки, он не является примитивом?
>>1056586Я влез в вашу дебильную беседу только после того, как ты начал пиздеть, что любой атомик можно реализовать на мьютексах. Причём ты не остановился даже после того, когда я явно спросил про atomic_flag. Который должен быть lock-free.Кто там у вас примитив — это ты выясняй со своими дебильными собеседниками.
>>1056590>Который должен быть lock-free.У lock-free есть какое-то другое свойство, кроме производительности? Примитив - это то, через что можно сделать всё остальное, атомик флаг пишется на мьютексах и примитивом не является, отличие будет только в производительности.
>>1056597>атомик флаг пишется на мьютексахДебил, как ты на мьютексах удовлетворишь требованию lock-free?
>>1056598У lock-free есть какое-то другое свойство, кроме производительности?
>>1056598Как ты вообще удовлетворишь это требование на ЦП, на котором нужной инструкции нет?
>>1056579>бульЗиг бульк!
>>1056604Никак. А что?
>>1056597>другое свойство, кроме производительностиУ него одно свойство - операции (некоторые) с ним выполняются за один такт. К производительности это никаким краем.
>>1056625>У него одно свойство - операции (некоторые) с ним выполняются за один такт.Ёбаное гонево.1) Ты не можешь за один такт сказать всем ядрам процессора о том, что ты сейчас будешь менять один бит.2) То, что оно сделано за один такт, не означает того, что нету data race.>К производительности это никаким краем.Тогда для чего нужно требование lock-free? Есть другие применения у lock-free-операций?
>>1056629>Тогда для чего нужно требование lock-free?Они должны быть address-free.
>>1056629>Ты не можешь за один такт сказать всем ядрам процессораЗачем мне им это говорить? Для того и ввели понятие "атомарных" операций, чтобы не было пересечений ни по кешам ни по пайплайну. см. >>1056630>Тогда для чего нужно требование lock-free? https://en.wikipedia.org/wiki/Linearizability
>>1056630>>1056631О, отлично, попёр конструктив.>>1056630Никакое свойство mutex не препятствует исполнению atomic_flag через мьютекс (кроме самого требования не делать это через мьютекс). address-free - это о меняемом значении и о том, что оно должно обновиться во всех адресных пространствах сразу. Когда ты залочил буль и пишешь новый буль, это обеспечивается механизмами когерентности кэша физической памяти в ЦП. Когда ты делаешь это с помощью одной инструкции, происходит то же самое, просто очередью управляет процессор без мьютексов - если несколько потоков подряд решат записать в буль в одно время, они либо залочатся на разное время, либо залочатся на большОе время (достаточное для того, чтобы разрулить все ядра в самом худшем случае) - в зависимости от того, как процессор сделан.>>1056631>Зачем мне им это говорить?>чтобы не было пересечений ни по кешам ни по пайплайну.atomic_flag zalupa;........и тут такие 2 треда (которые не на одном ядре выполняются) одновременно решают сделать:result=zalupa.test_and_set();Что произойдёт дальше? Оба треда получают false?
Если вы не видите причин для улучшения производительности, просто представьте себе, что тред, в котором залочен критический буль (всем нужен, все используют), исчерпал тик и ушёл спать. Пока остальные треды не решат, что этот буль всем им нужен, пройдёт до хрена тактов. Если в ЦП есть нужная атомарная операция с булем, такого никогда не будет.
>>1056726>Что произойдёт дальше?Обе инструкции выполнятся последовательно в произвольном порядке.
От Clion-параши опять отвалилась вижуал студия. Блять сука две недели назад все работало. АААА!
>>1056734>Обе инструкции выполнятся последовательноКак одно ядро узнает о том, что на втором ядре выполняется инструкция для того же адреса?
>>1056726>Никакое свойство mutex не препятствует исполнению atomic_flag через мьютексУ mutex есть гарантия address-free?>address-free - это о меняемом значении и о том, что оно должно обновиться во всех адресных пространствах сразу.Цитату из стандарта, плиз.
>>105673820 минут плясок с бубном и студия снова работает.Так называемая питерская АйТи-элита сделала программу, которая перестает работать, а затем начинает работать без всякой логики.Заработало после того, как я поудалял все проекты, все cmake кэши попробовал создать проект заново.
>>1056754>У mutex есть гарантия address-free?Мьютекс содержится в памяти - ясен пень, он address-free, это свойство памяти, расшаренной между процессами средствами ОС, блядь. Попробуй найти хоть одну ОС, в которой изменения в расшаренной памяти видны не всем процессам сразу, это естественное свойство расшаренной памяти, она только для этого и нужна. Попробуй найти хоть одну архитектуру ЦП, в которой видимость записи в память зависит от того, какая таблица виртуальной памяти была загружена.>Цитату из стандарта, плиз.http://eel.is/c++draft/atomics.lockfree#4
>>1056770>Мьютекс содержится в памяти - ясен пень, он address-freeБез пней, пожалуйста. Гарантию address-free принеси. На уровне стандарта.
>>1056739По мемори фенсу, очевидно.
>>1056779>На уровне стандарта.Еще б стандарт знал об этом чего.
>>1056779Щас у меня голова вскипит, ты заебал меня. Это ты так ведёшь меня к тому, что в плюсах мьютексы только для тредов, и что комитет вставил атомик_флаги, но до сих пор не сделал межпроцессные мьютексы обязательными, которые можно запросто написать на тех же инструкциях? Ладно, я всё понял. Да, действительно, с точки зрения STL атомик_флаг - незаменим в строгом смысле.http://eel.is/c++draft/thread#req.lockable.general-1>An execution agent is an entity such as a thread that may perform work in parallel with other execution agents. [ Note: Implementations or users may introduce other kinds of agents such as processes or thread-pool tasks. — end note ] The calling agent is determined by context, e.g. the calling thread that contains the call, and so on.Здесь говорится, что агент - это тред, процесс и т.д., но не говорится, что процесс должен быть агентом. Грубо говоря, заменимость атомик_флага мьютексом зависит от implementation.>>1056829Ага, и мемори-фенс у нас за один так выполняется, да? Я уже не говорю о том, что в большинстве процессоров за один такт вообще ничего не выполняется, так как гиперскалярность. В терминологии силён не особо, но этот твой мемори-фенс означает то, что одно ядро должно сказать всем остальным об изменении буля ДО ТОГО, как они тоже попытаются это сделать, сделают и уже выполнят другие инструкции с использованием полученного значения. В этом вы меня не наебёте - из атомарности операции следует не то, что она за такт выполняется, а чаще всего то, что она выполняется одной инструкцией.
>>1056855>но этот твой мемори-фенс означает то,Нет. Это просто инструкция, которая учитывается при наполнении пайплайна.>В этом вы меня не наебёте - из атомарности операции следует не то, что она за такт выполняется, а чаще всего то, что она выполняется одной инструкцией.Вопрос терминологии, не более. В ряде случаев обе формулировки верны.
>>1056855Я вообще не пойму, чего ты так вцепился в мьютексы как примитивы. Ты это в какой-то книжке прочитал?В общем случае атомики можно выразить через мьютексы, а мьютексы через атомики. (Но это в общем случае. Не в общем есть atomic_flag.) Почему одно примитивнее другого?
>>1056214Сотни нефти тебе.
>>1047134chcp 1251Гугли настройку локалей и пару win api функций.
>>1047203imbue для операторов std::wcout, std::wcin, std::cin, std::cout, и посмотри сразу какие там типы данных используются, чтобы потом меньше ебли было.
Как реализовать выпадающий список при вводе строки в консоли? Ну допустим регулярки + ассоциативный список, а внешне это можно как-то стильненько оформить? Типа как поисковая строка у Гугла. Без winapi...в теории можно питон подключить но такое.
Аноны, что с этим кодом не так? Почему при переборе с последнего элемента до первого и с первого до последнего получаются разные числа? Программа должна переводить из десятичной системы в двоичную, если что.
>>1056910Самое главное забыл.https://ideone.com/YTgn4r
>>1056868>Почему одно примитивнее другого?Изначально речь шла об std::atomic.>>1056881>imbue для операторов std::wcout, std::wcinВо-первых это не операторы. Во-вторых wcout и wcin на винде мёртворождены, нету их там.>>1056885Какой ещё выпадающий список? Откуда выпадает хоть? Питон нахуя для этого?Очевидное очевидно: возьми исходники mintty или другого терминала и прикрути. Без винапи ты это не осилишь, если сам не сделаешь терминал на Qt.>>1056910>Программа должна переводить из десятичной системы в двоичную,Делается в две строчки с помощью модификаторов вывода.>>1056910>Почему при переборе с последнего элемента до первого и с первого до последнего получаются разные числа? Потому что int i проходит разные значения, посмотри внимательно на свой for.
>>1056910Используй оператор "стремится к нулю" — `--> 0`https://ideone.com/x2OdKQ
>>1056914bin == 0 при i = bin.size, верно? Последний символ равен нулю и все такое, да?
>>1057023bin==0 я имел ввиду.
>>1057026бин ИТЫЙ я имел ввиду, блядь.
>>1057023>>1057026>>1057027bin[bin.size()] - это выстрел в ногу.http://ru.cppreference.com/w/cpp/container/vectorВот, ищи, где там написано, что там будет ноль.Пройди с помощью бумажки все значения i в обоих for-ах. Если ты не знаешь, как это сделать - тряси препода.
Ананасы, как узнать, что тип аргумента шаблонной функции имеет поле ::value_type?
Где можно почитать про возможности MinGW? Я посмотрел, что там куча библиотек, но описания к ним нет.
>>1057138гугли sfinaeP.S. чтобы было ещё веселее можно использовать вот такой макрос, но он работает только под визуалкой ждем концептовhttps://ideone.com/YZazpy
>>1057145>он работает только под визуалкойПотому что нахуя Y::##_arg_type ?https://ideone.com/od5Vxv
>>1057140Он несколько староват.
>>1057202
>>1057202>несколько староват
>>1057163ЕБАТЬ, ТЫ РАСКРЫЛ МНЕ ГЛАЗА, ГОСПОДИ, ТЫ ЛУЧШИЙ
>>1057300На вопрос отвечай.
>>1057317Какой вопрос то? зачем там ##? выяснилось что незачем ¯ \ _ (ツ) _ / ¯
>>1057330Ты зачем его туда вставил?
>>1057334Так я хотел склеить Y:: и аргумент, кто же знал что там можно и без склейкида и под визуалкой работает, мне большего и не надо
>>1057340Ты вообще знаешь, зачем ## нужен?> да и под визуалкой работаетОна известна своим кривым препроцессором. Чаще он не осиливает валидный код, но тут «осилил» (т.е. выдал ожидаемый результат) невалидный. Считать ли это плюсом? Не думаю.
>>1057342>Ты вообще знаешь, зачем ## нужен?#define FOO(a, b) (a##b)std::cout << FOO(2, ch);//"2ch"
>>1057345Нет, это не stringification.
>>1057346чуть-чуть не корректный пример привел#define FOO(a, b) (a##b)int c2h = 10;std::cout << FOO(c2, h);//"10"вот так вота # обрамляет лексему в двойные кавычки
>>1057350Ок.И зачем слеплять :: и _arg_type в единый токен? Это 2 разных токена и должны быть ими.
>>1057352>Кто же зналшо доебался то?
>>1057355>шо доебался то?Есть за что.
>>1057393за что? за то, что я не очень силен в самой худшей части этого языка?
>>1057396>в самой худшей части этого языка?Есть лучшие методы кодогенерации, чем макросы?
>>1057400Разве что MOC, да отдельные утилиты для кодогенерации. Но это не делает макросы менее отвратительными
>>1057202А какой тогда компилятор использовать?
>>1057422MinGW и используй. Эта >>1057202 манька судит о новизне компилера по дате модификации топ-левел каталога. А если пройти внутрь этого каталога, то видим пикрелейтед.
>>1057422Можешь взять mingw-w64 хоть седьмой версии (см. >>1057205 ).
Можно ли писать программы на OpenGL без библиотеки glut? Дело в том, что она не входит в комплект MinGW, а на официальном сайте архив только с h файлами без файлов самой библиотеки. Где её брать не понятно.
>>1057425http://www.transmissionzero.co.uk/software/freeglut-devel/
Сисси-бои, как в Win32 API сделать так, что бы дочернее окно было привязано к нижней границе родительского (главного) окна и чтобы, когда главное окно было не в полном размере, дочернее окно всё равно было на нижней границе. Типа как у MSVS окно вывода ошибок. Спрашиваю не из-за лености, а от отчаяния.
>>1057425glfw или SDL, выбирай любое
>>1057445>как в Win32 API сделатьнахуй, решительно
>>1057458Что так категорично?
>>1057450SDL - не рабочая библиотека. Я всё аккуратно скопировал в папки MinGW, подключил библиотеку к проекта и он мне выдают, что в самой библиотеке не может найти функции:c:/MinGW/i686-w64-mingw32/lib/libSDL2.a(SDL_systimer.o): In function `SDL_SetSystemTimerResolution':/Users/slouken/release/SDL/SDL2-2.0.5-source/foo-x86/../src/timer/windows/SDL_systimer.c:57: undefined reference to `_imp__timeBeginPeriod@4'и ещё 100500 аналогичных строчек...Видимо выкладывают какие-то битые сборки и не проверяют их.
>>1057495https://github.com/spurious/SDL-mirrorПопробуй отсюда ее вытянуть и сбилдить на том же cmake, к примеру, самое простое, что можно придумать.А вообще, если ты решил копошиться под MinGW, то советую лучше вытянуть MSYS2 или Cygwin (второй будет по-жирнее, но и по-лучше, вроде как). MSYS2 самый простой вариант для тебя, как мне кажется. Установишь его и потом pacman-ом поставишь еще sdl и всего-то делов.
Ононы, нахуя нам "оператор ."?
поясните за Седжвика, прочел страниц 100 и возникает вопрос, нет ли чего лучше по теме алгоритмов ?
>>1057634И что тебе не понравилось? Ну если ты скучающий аутист, то можешь Кнута навернуть.
>>1057495>и он мне выдают, что в самой библиотеке не может найти функции:timeBeginPeriod - это функция из винды. Видимо, тебе нужно ручками подключить "Winmm.lib". Я не знаю, есть ли в GCC вообще это автоматическое подтягивание либ, я никогда не видел его. Судя по километрам "-lХУЙПИЗДА" в мефкфайлах, которые я видел - нет.>>1057559Это часть языка, что значит "нахуя"? От того, что он не может быть перегружен, он не перестаёт быть оператором.
>>1057687я дебил, соре, не так написал вопроснахуя в комитете идут разговоры о возможности перегрузки оператора точка? зачем нам перегружать ТОЧКУ БЛЯТЬ, чтобы ещё сильнее язык усложнить?
>>1057425Можно и нужно, glut устарел уже лет как 10.SFML, GLFW, SDL, ну или писать напрямую без сторонних библиотек.
>>1057818Хотят сделать компилируемый LISP, небось. Хуй что выйдеет, впрочем. То, что разговоры идут, ничего не значит.>>1057687> не знаю, есть ли в GCC вообще это автоматическое подтягивание либ, я никогда не видел его. Судя по километрам "-lХУЙПИЗДА" в мефкфайлах, которые я видел - нет.Только что проверил скачанный архив с SDL - там есть pkgconfig, в котором написано всё это:>Libs.private: -lmingw32 -lSDL2main -lSDL2 -mwindows -Wl,--no-undefined -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -static-libgccТо есть, всё должно линковаться. Куда ты распаковал архив? Нужно распаковывать так, чтобы папка i686-w64-mingw32 слилась с такой же папкой МинГВ.
И вообще, какую систему сборки ты используешь?
>>1057829Можно чууууть-чуть поподробнее про лисп?
>>1057831Разве что совсем чуть-чуть, я только Схемку знаю немного (там ООП нету, вроде, но есть полноценные макропреобразования). Дело в том, что, имея интерпретатор (с JIT или без - вопрос производительности) можно писать некоторые специфичные вещи так коротко, что на плюсах ты заебёшься писать. Макро в ЛИСПе - это как препроцессинг, только его можно делать в любом месте и использовать состояние программы и все возможности языка, а не только всякие примитивы типа define, #, простой подстановки и так далее. Шаблоны - это то, что приближает C++ к ЛИСПу. Constexpr if, constexpr array и прочее - это перетягивание возможностей языка на сторону компилятора. Для того, чтобы сделать double dispatch - т.е. вызов метода соотв. динамическому типу и вызов метода, соотв. динам. типу аргумента - в плюсах надо городить стену кода из одинаковых методов, так как это единственный способ автоматического выбора перегруженной функции по типу, даже dynamic_cast тебя не может спасти. Некоторые вещи можно добавить в плюсы ПОЧТИ безболезненно (статики создаются в каждом инстансе generic lambda вместо одного на всех, http://coliru.stacked-crooked.com/a/ae480e8cfdf344d1, нахуй это надо?), некоторые - со страшной болью, как constexpr if.Без встроенного компилятора и возможности записи кода в исполняемую память (привет защите от исполнения в большинстве современных ОС) C++ ЛИСПом не станет, и если это хоть когда-то случится, стандарт языка станет занимать шкаф, а ошибок в стандарте и компиляторах будет море.
>>1057849http://coliru.stacked-crooked.com/a/ae480e8cfdf344d1Запятая лишняя.
>>1057849Ну про лисповые макросы, и изменения кода без перезагрузки программы я слышал, но каким боком тут "оператор точка"? :D
>>1057849Про инстансы статиков - логично, а вдруг static decltype(hui) Ggurda;?тогда без многих инстансов точно не обойтись, а городить проверки "зависит ли тип статической переменной от типа одного из аргументов?" было бы лишним, вот честно
2ch, не могу понять, как в winapi отслеживать события вне окна?
>>1057851Почитал пропосал и понял, что это у меня синдром утёнка.http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1990/WG21%201990/X3J16_90%20WG21%20Request%20for%20Consideration%20-%20Overloadable%20Unary%20operator.pdfВ целом неплохо написано. Это и есть ответ на твой вопрос о том, зачем это нужно. Но то, что из плюсов пытаются сделать ЛИСП - всё равно отчасти правда.>>1057852Собственно, это не только к лямбдам относится. Иногда по коду сразу не видно, будет инстанциирован тимплейт ещё раз или нет. Но практическихх примеров для иллюстрации у меня нет.
>>1057858Иди НА ХУЙ.
>>1057876А вот и быдлецо подъехало, почему не на заводе или не в школе?
>>1057818>нахуя в комитете идут разговоры о возможности перегрузки оператора точка?Зачем задавать такие вопросы? Находишь пропозал о перегрузке оператора точка и читаешь мотивационную часть.
Как запустить через асинк метод класса?A a();auto f = std::async(std::launch::async, a.do);Ошибка invalid use of non-static member function, но должен же быть вариант запустить эту шляпу.
>>1058234В лямбду оберни.
>>1058234std::async(..., &A::do, std::ref(a))
>>1057445Придется ловить все сообщения об изменении родительского окна и двигать дочерние. Но лучше переосмыслить дизайн и сделать контейнеры.
https://wandbox.org/permlink/DfvdpVzk30b7QYo6Кто объяснит поведение этого кода, тому нихуяПосмотрим, что местные маньки знают о цепепе.
>>1058406>Посмотрим, что местные маньки знают о цепепе.При чем здесь язык? Видимо данный компилятор считает себя умнее тебя так и есть
>>1058411Это что, объяснение?
>>1058406Здарова
>>1058406компилятор выкинул цикл при включенной оптимизации, например потому что нет эффектов. Тоже мне загадка века
>>1058406Сто раз обсосано.http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1528.htm
>>1058367Благодарю
>>1058463>>1058525Этим нихуя.
>>1058427Что ты этим хочешь сказать?
>>1058427В Release запусти, маня
>>1056738Уебанцы без нормального тулчейна, вот кто вы. Ваш тулчейн специально на плюсах написан чтобы вы страдали сильнее.
>>1058601релиз, -О3 у cl это называется /Ox
>>1058610И какие выводы?
>>1058611>данный компилятор считает себя умнее тебя
>>1058612Это унылое петросянство, а не выводы.
>>1058614Какие выводы то? аккуратнее с бесконечными циклами без побочных эффектов? юз онли волатайл перменные в вайлах? cl > clang? Не лучшие оптимизации меняют поведение программы? о каких выводах ты говоришь?
>>1058615>аккуратнее с бесконечными циклами без побочных эффектов?Да, ибо UB.> юз онли волатайл перменные в вайлах? Это ещё зачем?> cl > clang?Лол, нет.> Не лучшие оптимизации меняют поведение программы?Тут UB, так что никто больше не обязан сохранять какое-то поведение программы. О жид аемое ли не о жид аемое.> о каких выводах ты говоришь?Которые ты должен сделать для себя.
>>1058251Что-то я не понял.http://coliru.stacked-crooked.com/a/8f5d0c3d27bcf38cПочему на строчке 23 он сам дедусит, а на строчке 25 без тимплейт аргументов обламывается?
>>1058774Может потому что std::async это шаблон функции, а std::function это шаблон класса?Почемуstd::vector v {1, 2, 3}обламывается у тебя тоже вызывает вопросы?
>>1058788>Может потому что std::async это шаблон функции, а std::function это шаблон класса?Правда, в C++17 будут deduction guides, но для member function не завезли.
>>1058788Вектор у меня не вызывает вопросы, там другое совсем.>template< class Function, class... Args>>std::future<std::result_of_t<std::decay_t<Function>(std::decay_t<Args>...)>> async( Function&& f, Args&&... args );Function - это что такое?
>>1058807>Function - это что такое?Параметр шаблона.
>>1058809Почему он так называется и почему указатель на метод подходит под это название?http://en.cppreference.com/w/cpp/language/function_templateЭто он? Каким боком указатель на мембера подходит под это определение?
>>1058817Можешь переименовать его в T.
>>1058864Как async догадывается до того, что нужно делать с указателем на метод, и до того, что первый аргумент в списке - это lhs для .*?Где в доках написано, что async принимает указатели на методы таким образом?
>>1058912some kind of magicно лучше в лямбду оберни)
>>1058912Как-то так https://wandbox.org/permlink/M2fO1tLfqPnBQAZm
>>1058807Function - это тип удовлетворяющий требованиям Callable.Что такое Callable написано здесь https://en.cppreference.com/w/cpp/concept/Callable
>>1058914>>1058915>>1058917Всё, я допедрил. Всего-то навсего комитет не добавил очевидные deduction guidelines, которые прямо следуют из определения Callable.
При чём для бинда эти гайдлайны есть:http://coliru.stacked-crooked.com/a/082c14891a5ad4f5
>>1059017>для бинда эти гайдлайны естьКакие гайдлайны, поехавший? Это обычный шаблон функции. Deduction guides нужны для классов.
>>1058915Не совсем так, различие между разными видами callable наружу не торчит.
>>1059087Ах ты блет!>>1058791>Правда, в C++17 будут deduction guides, но для member function не завезли. http://en.cppreference.com/w/cpp/language/class_template_argument_deduction> If C is defined, for each constructor (or constructor template) Ci declared in the named primary template (if it is defined), a fictional function template Fi, is constructed, such that > template parameters of Fi are the template parameters of C followed (if Ci is a constructor template) by the template parameters of Ci (default template arguments are included too)> the function parameters of Fi are the constructor parameters> the return type of Fi is C followed by the template parameters of the class template enclosed in <> > If C is not defined or does not declare any constructors, an additional fictional function template is added, derived as above from a hypothetical constructor C()> In any case, an additional fictional function template derived as above from a hypothetical constructor C(C) is added, called the copy deduction candidate. Я правильно понял, что дедукшн для класса определён через дедукшн для функций? Тогда всё есть!
>>1059124>Я правильно понял, что дедукшн для класса определён через дедукшн для функций?Автоматический — через вывод типов для конструктора.user-defined через функцию спец. вида.> Тогда всё есть!Что есть? deduction guides для std::function при инициализации её с использованием member function нету. http://en.cppreference.com/w/cpp/utility/functional/function/deduction_guides
>>1059128Вот теперь точно допедрил.
>>1059088Ну код был не о том как оно там реально сделано, а о том как можно, например, отличить мембер функтцион от не мембер.
>>1059162Ок.
Есть ли книги/статьи/уроки где бы всё внимание уделялось объектно-ориентированному программированию?
>>1059335Нет
>>1046880Что там кидать?В ширину: у тебя есть граф из спичек. Выбираешь наугад вершину и поджигаешь ее. Когда огонь потухнет, проверяешь, есть ли не загоревшиеся спички. Если есть, повторяешь операцию.В глубину. У тебя есть граф-лабиринт. Идешь куда хочешь, на каждом ходу помечаешь пройденную вершину. Если некуда идти, возвращаешься назад до первой развилки и идешь в новую сторону. Продолжаешь до тех пор, пока не вернешься к самому началу. Проходишь таким образом каждую компоненту связности.Код есть где угодно.
Что не так с этим кодом, анон?https://ideone.com/DakJUFПочему у него m не равен m, что ему не нравится?
>>1060563>> str.size()-1сам угадаешь?
>>1060588алсо, смысла нет сравнивать более половины символов.
>>1060588Не угадает он нихуя, он не умеет читать написанное.
Есть класс в котором динамически аллоцируется буфер. Память освобождается в дестракторе. Хочу передавать объект такого класса по значению, по цепочке, из внутренних вызовов во внешние и чтобы память освобождалась в деструкторе последнего внешнего объекта. Хочу тупо добавить bool ownerclass C{ ... buf .... bool owner ~C() { if (owner) { free(buf); } } }и добавить copy constructor и assignment operator чтобы передавать оwnership C (const C& copy) { this->owner = true; copy.owner = false; this->buf = copy.buf; .... }Проблема в const - его нужно дропнуть, но тогда не будет работать передача в верхние вызовы, так как будет создаваться временный объект типа reference и он обязан быть const. Что делать?
Когда уже перекатываться будем?
>>1060563>Что не так с этим кодом, анон?Всё не так.
Двач, есть ли хорошие способы как можно исследовать чужой код? Или хотя-бы подскажите как можно перекатываться по объявлениям и определениям. В данный момент я просто задрачиваю поиск, либо локально на компьютере, либо на гитхабе, в крупных проектах это делать очень долго и сложно.
>>1060913инетересно. микрософт это хавает без проблем. а гнусь ругается на отсутствие const в копи конструкторе.
>>1060928В любой нормальной иде есть функции go to definition/ declaration.
>>1060934Для этого в этой иде нужно создавать проект и муторно добавлять туда файлы, не считая других препятствий этих иде. Может быть есть софт, или способ как можно сходу начать исследовать код.
>>1060913>Что делать?Нормальную move-семантику.
>>1060913>Хочу тупо добавить bool ownerА если owner сдохнет раньше не-owner'а('ов)?
>>1060939Это embedded, плюсовость должна быть минимальная, даже не с++98, просто C с классами. Нет никаких STL примочек не говоря уже о С++11 rvalue references и тп. А обойти мою проблему можно разными способами - делать deep сopy например и тд. Просто интересно есть ли другие альтернативы сделать вручную без примочек>>1060954тогда беда и нужно все усложнять. reference counting какой-нибудь. подразумеваю простой пример где последний owner всегда переживает всех предыдущих>>1060933
>>1060933Микрософт хуй ложил на стандарт.>>1060913>Что делать?Rvalue reference.>>1060913http://coliru.stacked-crooked.com/a/3b1c1f4a891fa9dc>>1060936>Для этого в этой иде нужно создавать проект и муторно добавлять туда файлы,В кутыкреакторе - несколько кликов (import existing project).>>1060958>Это embedded, плюсовость должна быть минимальная, даже не с++98, просто C с классами. Ох, блядь. Что у тебя за компилятор такой с поддержкой стадарта "си с классами"? Какой флаг хоть?http://coliru.stacked-crooked.com/a/2e5a60b842cb35ea
>>1060913Можно при передаче передавать новый объект, что-то типа foo(C(otherC, deep_copy{}})И пытаться эмулировать так мувы.
>>1061008>deep_copyДумал одно, написал другое. move или что-то подобное.
>>1060996да компилятор нормальный, свежий гнусь. я имею ввиду общий стиль заточен под "си с классами" чтобы размер кода минимизировать. никаких string STL, exceptions, даже new желательно избегать. твой пример работает нормально с флагом -std=c++11, спасибо.
>>1061019>чтобы размер кода минимизировать.С unique_ptr тащится какой-то шмоток кода, который тебе не нужен. Ты можешь сделать свой вариант на буле ручками. Никакого другого оверхеда там нет. Ты просто так написал:>Это embedded, плюсовость должна быть минимальная, даже не с++98, просто C с классами. Нет никаких STL примочек не говоря уже о С++11 rvalue references и тп. как будто там у тебя рили си с классами. rvalue reference - это указатель с другой семантикой, почему ты отмахиваешься от него?
>>1061037Ну так то ты прав, раз оверхеда нет, надо попробовать. Отмахиваюсь инстинктивно так как привык по старинке. Байтоебство же в основном на голых сях и чуток плюсов для эстетики. В 99% случаях (прочитать сенсоры и кнопочки и включить пимпочку) вполне хватает. Здесь просто особый случай с кучей динамических буферов.
>>1061131Олсо, rtti и exceptions отключил флагом компилятора?
>>1061037>rvalue reference - это указательдибил
Ананасы, поясните мне за parallelism ts или как его. Что то, похоже, я нашел только то, что замутили reduce с измененной политикой выполнения и добавили аргументы в методы алгоритмов, так? И похуя мне это, если есть OpenMP?!
>>1060958MyClass a;get_MyClass().swap(a);мув семантика в с++98
>>1045411 (OP)Что делает флаг gcc -O0 ?
>>1061633отключает любые оптимизации
>>1061692Кроме NRVO, как я выяснил недавно.
>>1061914Ну это не то, чтобы оптимизация...Т.е. конечно это оптимизация, но не в том смысле чтобы луп раскрутить или функцию заинлайнить, а в том, что стандарт явно разрешает её делать.
Пачаны, как запустить лямбду в компайл тайме? без этого 38-я строчка не компилируется по понятным причинам потомучто лямбду до с++17 нельзя пометить constexpr, нужны воркараунды для 14ого стандарта.
>>106198538-я это где статик ассерт
>>1061985>Пачаны, как запустить лямбду в компайл тайме? 1) Никак.2) GC_IS_HAS_METHOD - это что за хрень? Хули там лишняя запятая делает?
>>1061985Ты хоть покажи, что у тебя этот макрос должен делать. Если ты проверяешь наличие метода, то есть такая идиома, как Member Detection, подробно тут https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Member_Detector
>>1062135дададдаадад, именно это, но там чтобы это работало - надо генерировать класс перед его использованием, у меня же всё без этого, не нужно никакого дополнительного кода перед использованием но в статик ассерт не засунешь без констэкспраhttps://ideone.com/84nJkZ
>>1062147тебе нужно не возвращать true/false из лямбды, а делать возвращаемый тип std::false_type или std::true_type, тогда должно прокатить
>>1062152я тоже думал об этом, но decltype([](){}) не компилируется :(
>>1062161https://ideone.com/u43NlSЯ пытался, в общем. Может это сможет как-то помочь
>>1062181перед return надо typename написать)Но всёравно до с++17 в статик ассерт не засунешь, обида(
Как в этом ебучем qt-creator'е создать единый .qss файл, чтобы он линковался с ебучим GUI во всем проекте?
>>1062759Тебе нужно в ресурсы его запихать и после создания QApplication задать стиль из файла, хули ты как дурак?!
>>1062147https://ideone.com/mW8F0g
ПЕРЕКАТhttps://2ch.hk/pr/res/1063107.htmlhttps://2ch.hk/pr/res/1063107.htmlhttps://2ch.hk/pr/res/1063107.htmlhttps://2ch.hk/pr/res/1063107.htmlhttps://2ch.hk/pr/res/1063107.htmlhttps://2ch.hk/pr/res/1063107.htmlhttps://2ch.hk/pr/res/1063107.html