@ProCxx

Страница 2047 из 2477
Constantine
11.05.2018
12:13:41
bool operator==(std::string& str, boost::variant<std::string>& b_var){ return (str == b_var); }
я могу ошибаться, но в ISO C++ это должно быть либо в namespace boost, либо в namespace std :)

Spoonson
11.05.2018
12:15:11
в std добавлять что-то UB

Anatoly
11.05.2018
12:19:19
в std добавлять что-то UB
http://en.cppreference.com/w/cpp/language/extending_std , есть исключения

Google
Constantine
11.05.2018
12:29:01
я предполагал, что он будет добавлять в boost
я надеюсь, именно поэтому ":)" после "в namespace std" ;)

bool operator==(std::string& str, boost::variant<std::string>& b_var){ return (str == b_var); }
https://godbolt.org/g/Si6Dme оператору стоит уметь находиться через ADL

Antony
11.05.2018
12:35:07
Немного инфы про внутренности компиляторов: GCC с недавнего времени научился оптимизироваться constepxr функции намного лучше чем остальные: Так GCC-6 превращает всё вычисление функции в константу https://godbolt.org/g/1ezAA2

Suren
11.05.2018
12:37:35
Привет. Такой вопрос от новичка по C++ (точнее даже по ардуине, которая на цпп) есть ли разница объявлять static переменную внутри функции, либо в начале программы глобально? не влияет ли на производительность то, что функция, которая вызывается тысячу раз в секунду имеет первой же строчкой объявление переменной? ну так как статик, то она не будет создаваться заново, но внутри на низком уровне там работают какие-то проверки типа (если ещё не существует, создать, а если уже существует, пропустить). вопрос, собственно, в том, как сделать более производительно? объявлять заранее глобально?

Ruslan
11.05.2018
12:39:21
Ребят, приветики имеется такая дичь int x, y; x = 1, 2, 3, 4, 5; y = (1, 2, 3, 4, 5); cout « x « y; отсюда вывод, что x = 1, а y = 5 что это вообще за способ инициализации такой

чертов сололерн

Antony
11.05.2018
12:39:40
Antony
11.05.2018
12:47:32
но там все не так просто

Google
Antony
11.05.2018
12:48:12
constexpr выполняет фронтенд, информация о том что параметры константные пришли в оновном на бэкенде

Alexander
11.05.2018
12:48:12
что там не так?

а как там шланг?

Antony
11.05.2018
12:48:38
шлагн совсем тупит

Alexander
11.05.2018
12:48:40
у них с этим лучше или нет? потому что блин, бесят уже

Antony
11.05.2018
12:48:46
он даже с constexpr не оптимизирует

https://bugs.llvm.org//show_bug.cgi?id=37415

Alexander
11.05.2018
12:50:19
вот кусок говна

Vyacheslav
11.05.2018
12:51:16
http://shtonda.blogspot.com/2017/09/cpp-templates-complete-guide-2nd.html

Suren
11.05.2018
12:52:36
Разница есть семантическая, поэтому производительности ни при чем
один говорит при чем, другой говорит не при чем как в итоге то?

Alexander
11.05.2018
12:52:45
блин, какие же компиляторы беспомощные

Ilia
11.05.2018
12:53:21
Если тебе нужно просто глобальная переменная, то не используй переменную в функции

один говорит при чем, другой говорит не при чем как в итоге то?
Мы не говорили противоречащие друг другу вещи

Suren
11.05.2018
12:55:47
Мы не говорили противоречащие друг другу вещи
хм. ты говоришь производительность не при чем, а я как раз спрашиваю, будет ли влиять на производительность

Ilia
11.05.2018
12:55:56
Будет

Я не говорил, что не будет. Я говорил, что это не так важно

Antony
11.05.2018
13:25:48
блин, какие же компиляторы беспомощные
Зато откопался замечательный пример для троленья С разработчиков: - Ваш С++ на 0.1% медленнее С - А помоему с точность до наоборот. И пруфы есть: https://godbolt.org/g/JZrhYg

Google
Kirill
11.05.2018
13:46:38
Немного инфы про внутренности компиляторов: GCC с недавнего времени научился оптимизироваться constepxr функции намного лучше чем остальные: Так GCC-6 превращает всё вычисление функции в константу https://godbolt.org/g/1ezAA2
а раньше он это не делал? тут ведь оптимизируемая функция она constexpr int и если я напишу constexpr int a = generate(); оно обязует компилятор дать мне эту константу на этапе компиляции.

Matwey
11.05.2018
13:47:18
http://shtonda.blogspot.com/2017/09/cpp-templates-complete-guide-2nd.html
Четвертое издание СТрауструпа на русском когда будет?

Kirill
11.05.2018
13:51:14
да. Вопрос в том, чтобы оптимизировало без явного указания constexpr res = generate()
а, это прекрасно, да, меня замущала трактовка просто.

Vyacheslav
11.05.2018
13:52:15
Четвертое издание СТрауструпа на русском когда будет?
честно, не знаю но есть вот такая книга https://www.ozon.ru/context/detail/id/33852757/

Kirill
11.05.2018
13:54:04
там по ссылке две разные версии GCC, стара версия же не соптимизировала
тут напрягает отсутствие гарантий. я делал констекспр конструкторы классов и все инстансы которые хотелось вычеслить в компайл тайме делал constexpr. в итоге компилятор говорил где конкретно ошибка, что вот этот тип не литеральный братиш, или вот тут у тебя параметр не констекспр. в конкретном случае с функциями, такое не прокатит т.к. хочешь в рантайме выполняй, хочешь в компайл тайме

Antony
11.05.2018
13:55:04
да, меня тоже напрягает

Kirill
11.05.2018
13:57:36
я в личку отписался :)

Ⱪonstantin
11.05.2018
14:06:50
A до 6го поддержки C++17 не было

Ⱪonstantin
11.05.2018
14:18:52
циклы в constexpr можно было и до 17 юзать
А можно пример? Я был уверен, что нет

Alexander
11.05.2018
14:24:02
http://en.cppreference.com/w/cpp/language/constexpr

Ⱪonstantin
11.05.2018
14:27:44
да, конечно
A, c c++14. Вижу

Alexander
11.05.2018
14:28:06
Vladislav
11.05.2018
18:30:23
http://cppquiz.org/quiz/question/206

Andrey
11.05.2018
18:35:40
Эквивалент е в инте?

Всмысле выдаст

Google
Vladislav
11.05.2018
18:36:09
Нет) я тоже на это попался

Andrey
11.05.2018
18:36:59
Хмммммм

Gleb
11.05.2018
18:38:20
Да там опять нулевой элемент массива переставлен

Admin
ERROR: S client not available

Scarf
11.05.2018
18:39:56
Vladislav
11.05.2018
18:40:15
1
Ага

Andrey
11.05.2018
18:40:42
Correct! We have several pieces of the puzzle, so let's peel away the layers. The grammar for sizeof is in [expr.unary]§5.3¶1: unary-expression: ... sizeof unary-expression sizeof ( type-id ) sizeof ... ( identifier ) ... We have three cases and the one that applies here is sizeof unary-expression. The unary expression is (0)["abcdefghij"], which looks odd but is just array indexing of string literal which is a const char array. We can see that (0)["abcdefghij"] is identical to ("abcdefghij")[0] from [expr.sub]§5.2.1¶1which says: ... The expression E1[E2] is identical (by definition) to *((E1)+(E2)) ... So we end up with 0th element of "abcdefghij", which is a, which is a char. And the result of sizeof('a') will be 1 since [expr.sizeof]¶1 says: ... sizeof(char), sizeof(signed char)and sizeof(unsigned char) are 1 ...

Matwey
11.05.2018
19:48:13
Господа, у меня к вам пятнечно вечерний вопрос. Есть A унаследованный от Base. И тут я хочу копирующее присваивание A реализовать, и тут мне начинает казаться, что это удобнее всего сделать дернув: static_cast<Base&>(*this) = static_cast<Base&>(other); и доделав специфичные для A вещи. Это ведь очень странная идея и надо завязывать?

Matwey
11.05.2018
19:54:42
О, спасибо

Alex
11.05.2018
21:31:06
https://ideone.com/qxgQl0 подскажите плиз почему не ловится исключение

Azoyan
11.05.2018
21:34:24
https://ideone.com/S5lRuz исправил тебе

Alex
11.05.2018
21:34:40
А, блин, сяп)

Azoyan
11.05.2018
21:35:02
Только память почистить

Alex
11.05.2018
21:35:22
Воистину работает \o/

Azoyan
11.05.2018
21:36:24
https://ideone.com/kAmzQf но лучше так. И с такими вопросами в супапро)

Alex
11.05.2018
21:38:53
Да не-не, я шарю-шарю Просто 5 утра даёт о себе знать (да и стараюсь особо catch'ами не пользоваться)

Egor
11.05.2018
22:18:53
catch2 для тестов кто использует? почему может быть: msvc\14.14.26428\include\filesystem(3446): note: could be 'std::filesystem::recursive_directory_iterator std::filesystem::begin(std::filesystem::recursive_directory_iterator) noexcept' [found using argument-dependent lookup] 1>msvc\14.14.26428\include\filesystem(3188): note: or 'std::filesystem::directory_iterator std::filesystem::begin(std::filesystem::directory_iterator) noexcept' [found using argument-dependent lookup] https://github.com/catchorg/Catch2/issues/1286

Timur
11.05.2018
22:46:11
Господа, допустим я разрабатываю dll-ку, и хочу в случае крешей релиз билда моей длл-ки у заказчика получить как можно больше инфы. Разумеется у меня будет дебаг инфа к релизу, и как минимум я хочу получить стектрейс. Вопрос: имеет ли смысл применять минидампы? Будут ли они работать в случае когда у меня как у разработчика нет всех длл/exe загруженных в процесс которые были загружены в момент создания дампа. Есть исходники, бинарники и дебаг инфа только моей длл-ки.
а в рамках какого процесса эта dll? что кроме системных dll Microsoft будет присутствовать в мини-дампе? Если бы речь шла про минидамп вашего процесса - то у вас всё было бы ок: системные dll, пусть и другой версии отладчик бы скачал с msdl.microsoft.com, а вами зарелизенные exe/dll были бы у вас и так. Но тут, похоже, вы часть другого процесса, и не всё так легко…

olologin
11.05.2018
22:57:25
а в рамках какого процесса эта dll? что кроме системных dll Microsoft будет присутствовать в мини-дампе? Если бы речь шла про минидамп вашего процесса - то у вас всё было бы ок: системные dll, пусть и другой версии отладчик бы скачал с msdl.microsoft.com, а вами зарелизенные exe/dll были бы у вас и так. Но тут, похоже, вы часть другого процесса, и не всё так легко…
Там будет присутстсовать например exe/dll который вызывает функции из моей длл-ки. Меня интересует отладка только проблем на своей части, в длл-ках к которым у меня есть pdb и исходники, т.е дампить как минимум стектрейс при сбое в своей длл-ке.

Google
olologin
11.05.2018
22:58:21
А, ну exe/dll который вызывает функции моей длл-ки мне конечно же никто не даст, потому как это часть кода заказчика

Timur
11.05.2018
22:59:46
ну, если это x64 то ABI гарантирует раскрутку стека (даже и без pdb), т.ч. стек то раскрутится, имен не будет/ Но под вами всё отладить удастся, т.к. будут свои и системные символы

не очень рабочий вариант, но жить можно.

olologin
11.05.2018
23:00:49
Я это просто к чему спрашиваю - в линуксе в аналогичной ситуации с core dump'ами нужно иметь бинарники которые вызывают методы вашего модуля

Timur
11.05.2018
23:00:52
Лучше, конечно, просить полные дампы приложений, чтобы хотя бы посмотреть как ваш код был вызван (и кто накосячил с аргументами)

olologin
11.05.2018
23:01:08
https://sourceware.org/ml/archer/2008-q4/msg00119.html

иначе без бинарников вообще даже на стек не посмотреть в своём модуле

Лучше, конечно, просить полные дампы приложений, чтобы хотя бы посмотреть как ваш код был вызван (и кто накосячил с аргументами)
Да, я возможно буду полный дамп с кучей делать, всё-равно это очень редкие ситуации когда приходится к таким дампам прибегать

но пару раз в год бывает когда у заказчика какой-то неповторяемый ад происходит

Timur
11.05.2018
23:03:14
в windows с этим лучше - не нужно находиться в той же версии OS, т.к. отладчик сам может подгрузить и символы и на код посмотреть в дампе. Но должна быть настроена инфраструктура с символ серверами, а тут не тот случай

olologin
11.05.2018
23:03:57
ну да, я думаю в случае проблем просто самому собирать релиз с дебаг инфо и отсылать заказчику

этого на первое время достаточно должно быть

Timur
11.05.2018
23:05:39
можно даже и pdb отдавать заказчику, чтобы он на месте windbg !analyze -v мог запустить на дампе. Не забывайте только про ключ /pdbstripped

Страница 2047 из 2477