Berkus
вот же
Berkus
C++ Language Dialect это оно
Igor
кажется разобрался, я в схеме искал =//
Igor
спасибо
Berkus
да в build settings проекта оно всегда и было
Igor
что-то значит затупил, просто нажал на корень проекта и появилось то что надо
JBáruch
все видели статейку про Conan на хабре?
JBáruch
https://habrahabr.ru/post/342982/
Anatoly
Да, автор оставлял уже ссылку :) Он как раз тебя просил похлопотать о поддержке Conan в CLion, и тебе огромное спасибо, что продвинул эту тему.
Roman
A ? B : C При истинном A, все равно значение C может быть вычисленно же?
можно даже так написать a = b ? : c; В этом случае b будет вычеслино только один раз, и если оно не ноль присвоено переменной а, иначе будет вычесленно це. Поправте меня если не прв
Roman
https://habrahabr.ru/post/342982/
это тоже самое что pkg-config ?
Berkus
читать-то не умеем?
Berkus
и не читай
Roman
и не читай
росскажи в кратце , для чего он ?
Berkus
для установки пакетов для сборки
Roman
Элвис оператор это гнутые расширения, в стандарте его нет
да, подсмотрел это в руководстве по гцц
Alexander "SonnySlave"
https://www.iso.org/standard/68564.html
Alexander "SonnySlave"
http://cppcast.com/2017/11/victor-ciura/
Alexander "SonnySlave"
https://github.com/bincrafters/conan-vs-extension
Stanislav
https://github.com/bincrafters/conan-vs-extension
мне кажется ты конан пиарешь сильнее чем бинкрафтеры)
Aleksandr
😁
Александр
даже в 1с есть в виде ?(condition, true, else)
Не путайте тернарный и Элвиса
Igor
Окей, тогда, последняя написанная аннотация: Аннотация на доклад с конференции Corehard 2017 о пакетных менеджерах в С++, а также небольшая подборка материалов по теме continuous integration. » Преамбула. От себя: Пакетный менеджер - очень нужная штука в более менее большом проекте, с ее помощью можно прописать зависимости вашего проекта от других. При необходимости она автоматически качает нужны версии зависимостей (библиотек) и компилирует их как вам надо. Поработав какое-то время Java-программистом (и попробовав maven и gradle) я искал что-то подобное в 2014 году. Не нашел. Но вот теперь все это уже есть. » Содержание доклада с таймингом: {первые 2 минуты пропустите} 2:00 - рассказывается про пакетные менеджеры для других языков; 2:30 - что обычно позволяет менеджер пакетов. 4:50 - что умеет Maven в Java (в частности можно описать зависимости, которые можно привязать к тестам). 6:44 - небольшая история (смешная) о поиске менеджера пакетов в С++. 8:24 - список менеджеров для С++. 8:36 - требования к пакетному менеджеру (на их основе дальше идет сравнение). 9:44 - список "плохих" менеджеров (со списком недостатков) - nuget, vcpkg, Qpm, pacm, cget, cppget); 10:25 - список "хороших менеджеров" со списком особенностей - cpm, conan, hunter. 10:48 - особенности cpm, установка boost и подключение к проекту, описание проблем и того, почему cpm оказался не таким уж хорошим. 13:30 - особенности conan, установка boost, openssl. 16:16 - конструкция conan (что где лежит, как хранится). 17:25 - особенности hunter, установка boost, небольшие "проблемы" с установкой boost+thread+chrono+... - отличается от conan процессом компиляции скачанных библиотек, качает исходники и собирает все. 21.25 - добавление зависимости вашего проекта от boost+openssl. 21:40 - конструкция hunter (структура каталогов и т.п.) 23.10 - итоги (они выбрали hunter, хотя conan тоже хорош) 24.00 - вопросы: что если в системе несколько компиляторов и надо собирать под каждый из них? (ответ для hunter) 25:40 - нужен ли в С++ вообще такой менеджер пакетов как в руби и т.п. (филосовский вопрос, длинный ответ). 29:20 - что если пакеты надо использовать с патчами, собирать с флагами? (ответ для hunter). » Ссылка на видео: https://www.youtube.com/watch?v=Q7uR-4L7pVk&list=PLgsLnJ-wgYTZRDRK3jrSOoarFg0ART6Ea&index=9 » Дополнение. От себя. По смежной теме стоит посмотреть и другие видео (ниже ссылки на развернутые аннотации): 1) доклад про travis.ci (а также conan и немного про docker): https://vk.com/wall-105242702_557 2) доаклад про обеспечение качества кода (про conan тоже есть, но также про статическую првоерку кода, ревью и т.п.): https://vk.com/wall-105242702_495 3) подробный разбор Conan: https://vk.com/wall-105242702_459
о) у меня есть табличка непросмотренного, просмотренного, и вкратце о чем было просмотренное, но это на пару голов выше и детальнее)
Anonymous
о) у меня есть табличка непросмотренного, просмотренного, и вкратце о чем было просмотренное, но это на пару голов выше и детальнее)
Я вместо таблички завел группу в вк, где и пишу аннотации на видосы и статьи. Оказалось, что это кому-то интересно :)
Anonymous
Тогда еще одна "аннотация" (из старых, если кто-то уже читал это - прошу простить меня): Понравилась заметка на habrahabr по декларативному программированию в С++: https://habrahabr.ru/post/270545/. (загляните в конец аннотации). 1) В статье говорится, что использовать напрямую try-catch - не очень хорошая идея, т.к. код будет нечитабельным (об этом же можно узнать почитав другие статьи по теме RAII-классов). 2) в статье описывается решение (уже лежит в boost 10 лет, но сейчас об этом говорят на конференциях по С++ достаточно много). Схематично показано как это решение внутри устроено - это особенно понравилось. 3) Дополнение (содержит мое личное мнение и с автором статьи не связано). Что касается примера из статьи - я бы (хотя кто я такой?) заменил его на что-то типа int *a = new int[25]; int *b = new int[25]; Проблема примера точно такая же как и в примере из статьи (но такой код гигабайтами пишут студенты и поэтому им будет понятно о чем речь) - оператор new может выкинуть исключение. Если bad_alloc вылетит при первом new - то утечки не будет, а при втором - будет. Решение проблемы очевидно - использовать RAII классы, например вектор. Если объект создается на стеке и если будет выработано исключение - стек "разматывается" и для таких объектов вызываются деструкторы. vector<int> a; vector<int> b; Тут утечки не будет. В стандартной библиотеке С++ есть куча готовых классов, поддерживающих идиому RAII - fstream сам закроет файл, unique_ptr (и все прочие умные указатели) сам освободит память при выходе из функции (в т.ч. по исключению) и т.п. Очевидно, что RAII работает прекрасно и про это можно прочитать: + Идиома RAII. Объекты управления ресурсами в C++: https://pro-prof.com/forums/topic/resources-control-o.. + Умный указатель unique_ptr: https://pro-prof.com/forums/topic/cplusplus-unique_pt.. 4) Ну а что же делать, если при возникновении исключения надо выполнять какие-то нестандартные действия? (Еще одна проблема) - не городить же каждый раз RAII-класс? На самом деле, пример когда это нужно привести не так просто, в примере из статьи проблема могла бы быть решена использованием std::string (тоже RAII класс). Но допустим, такая ситуация возникает. В качестве решения Александреску предложил идиому Scope Guard. Boost реализует ее и предлагает использовать макросы типа SCOPE_FAIL, которые создают на стеке анонимную переменную, для которой будет вызван деструктор при возникновении исключения. Ну и к этой переменной привязывают лямбду, которая и будет вызвана в деструкторе. Решение в бусте чуть сложнее, т.к. деструктор проверяет причины возникновения исключения (наша лямбда вызывается не во всех случаях). Некоторые детали реализации можно найти по ссылке.
Alexander "SonnySlave"
мне кажется ты конан пиарешь сильнее чем бинкрафтеры)
есть такое. Ты даже ещё не обо всех проявлениях знаешь) Мне нравится эта штука. И я её пиарю. Всё просто
Matwey
Господа
Matwey
Я сейчас в gdb слуйчано распечатал std::unordered_set через команду print
Matwey
И от увиденного стал молиться Господу нашему
Matwey
Нет где-нибудь скриптов каких-нибудь чтобы по человечески выдавало?
Berkus
есть для lldb скрипты на питоне
Berkus
которые выводят все как положено
Berkus
в новом свежем ллдб кажется это даже встроили внутрь
Berkus
полуркай
🦥Alex Fails
Вкрутили бы натвис
🦥Alex Fails
Или что-то подобное
Stanislav
даже cdb умеет вроде, либо это хелпер qt creator
Matwey
Мне кажется у меня несвежий gdb
Matwey
8.0.1
Matwey
какой там нынче положено иметь?
Matwey
Ох, как я сейчас красиво отсосал - забыл виртуальный деструктор определить. :)
Alexander "SonnySlave"
Matwey
Пол часа искал почему объекты не удаляются
Vyacheslav
пол часа не пол месяца
Matwey
Ну плюсы не для слабых духом
Vyacheslav
бесспорно
Marko
привет почему у меня в програме вибивает такое число 1.43678e+06 как его можна перевести в 10 систему?
Vyacheslav
оно в десятичной системе
Vyacheslav
у тебя на чистом С прога?
Vyacheslav
для cout точность выстави
Marko
que.exec("SELECT SUM(ticket_price) FROM "+train_name + "_people"); if(que.next()) max_possible_income = que.value(0).toDouble();
Marko
qt с бази даних беру суму
Marko
max_possible_income = que.value(0).toLongLong();
Marko
буру так но не паше
Vyacheslav
а у поля в БД какой тип?
Vyacheslav
и какая размерность
Berkus
буру так но не паше
"не паше" в чем выражается?
Marko
дальше ето число 1.43678e+06
Berkus
max_possible_income должен быть long long
Berkus
а не double
Vyacheslav
а где ты наблюдаешь это число?
Vyacheslav
куда выводится?
Matwey
Какой тип переменной?
Egor
что за Элвис ?
foo ?: bar — примерно эквивалентно foo ? foo : bar, только foo вычисляется ровно один раз https://en.wikipedia.org/wiki/Elvis_operator
Egor
Есть в некоторых языках
Egor
Вполне возможно, да
Matwey
А теперь внимание вопрос
Matwey
Сделает ли оптимизатор из тернарного оператора такую штуку сам при условии что в foo не вызывается функций или чего-то такого
Matwey
?