@ProCxx

Страница 2325 из 2477
Anton
05.09.2018
16:35:09
enum {yellow, black} kek; const char* str = typeid(kek).name(); Вот так выведет "._85"

Ilia
05.09.2018
16:35:12
Вот typeid как -то к int не понятно как применимо...

Anton
05.09.2018
16:35:51
Если enum именованный - выводит имя enum'a

Почему не int тогда?

Google
Aidar
05.09.2018
16:36:48
Потомучто я наврал

Constantine
05.09.2018
16:50:17
Хм... а можно как-то обойти проблему, что для рекурсивного вызова в лямбде в духе примера ниже нужно указать дважды сигнатуру функции? std::function<void()> recursive = [&] () -> void { if (true) return; return recursive(); };

Nikita
05.09.2018
16:54:15
auto recursive?

Constantine
05.09.2018
16:55:18
auto recursive?
думаете, сработает?)

Nikita
05.09.2018
16:55:21
Не сработает)

Constantine
05.09.2018
16:56:11
для deduction guides, как я понимаю, то же самое правило, что нельзя использовать имя до окончания инициализатора

Nikita
05.09.2018
16:57:04
А то что там return recursive это принципиально?

Constantine
05.09.2018
16:57:18
ну это синтаксис для рекурсивных лямбд

для нерекурсивных понятно, что никаких проблем нет

Nikita
05.09.2018
16:57:54
ну это синтаксис для рекурсивных лямбд
Я имею ввиду что именно return делает рекурсивный вызов

Constantine
05.09.2018
16:58:08
Я имею ввиду что именно return делает рекурсивный вызов
Это не принципиально и не верю, что важно

Это же не первая ветка возврата в лямбда-выражении

Nikita
05.09.2018
16:58:24
Тогда просто убрать return если тут void

Google
Nikita
05.09.2018
16:58:43
Но это только для void катит

Anton
05.09.2018
16:58:44
Вообще если лямбда раскрывается в функтор, почему нельзя как нибудь использовать this?)

Anton
05.09.2018
16:59:26
Ну, другое ключевое слово придумать

Constantine
05.09.2018
17:00:18
Я не уверен, но мне кажется, что там this будет на incomplete type

Nikita
05.09.2018
17:00:23
std::function<int()> recursive = [&]() { if (true) { return 3; } auto b = recursive(); return b; };

не очень элегантно

Constantine
05.09.2018
17:00:47
std::function<int()> recursive = [&]() { if (true) { return 3; } auto b = recursive(); return b; };
меня напрягает часть "int()", остальное же работает

Nikita
05.09.2018
17:01:07
ну как бы тип в любом случае надо где-то указать

Constantine
05.09.2018
17:01:50
выглядит лишнего

Nikita
05.09.2018
17:02:03
Почему?

Один раз указываем

Constantine
05.09.2018
17:02:13
потому что я могу получить себя в качестве параметра

Nikita
05.09.2018
17:02:14
Иначе как понять какой тип?

Constantine
05.09.2018
17:02:23
тип понятен же

Nikita
05.09.2018
17:02:45
Это в вашем примере, а не в общем

Constantine
05.09.2018
17:02:53
да и в общем тоже

Nikita
05.09.2018
17:03:18
std::function<void()> recursive = [&] () { if (true) return 3; else return “3”: return recursive(); };

Допустим у нас нету указания void()

Понятно что код некорректный

Google
Nikita
05.09.2018
17:05:20
Но вот в случае когда типы приводимы тоже непонятно

Constantine
05.09.2018
17:05:23
Допустим у нас нету указания void()
auto recursive = [&] (auto & self) { if (true) return; return self(self); }; recursive(recursive);

Олег
05.09.2018
17:05:35
Вы ещё придумайте, как в этом примере убрать виртколл, что внутри std::function живёт.

Nikita
05.09.2018
17:06:28
auto recursive = [&] (auto & self) { if (true) return; return self(self); }; recursive(recursive);
Ну тут же само определение обьекта идет до вызова recursive()

Constantine
05.09.2018
17:07:14
Ну тут же само определение обьекта идет до вызова recursive()
А в чем принципиальная разница между положить ссылку на self_type и передать его параметром во все функции?

Вы ещё придумайте, как в этом примере убрать виртколл, что внутри std::function живёт.
Ну это десятое, там даже синтаксически не получается такое написать

Nikita
05.09.2018
17:08:36
Потому что тип возвращаемого значения может зависеть от self

Constantine
05.09.2018
17:09:23
Вы ещё придумайте, как в этом примере убрать виртколл, что внутри std::function живёт.
Как минимум, можно налабать FunctionBeforeTypeErasure и виртуальных вызовов не будет. Почему STL не раскрывает эту часть - загадка

Потому что тип возвращаемого значения может зависеть от self
Это вопрос к вычислению auto возврата функций, он вообще не специфичен к лямбдам. Вы же можете сделать рекурсивную функцию с auto возвратом без проблем

auto gcd(int x, int y) { if (y == 0) return x; return gcd(y, x % y); }

Aidar
05.09.2018
17:29:04
auto recursive = [&] (auto & self) { if (true) return; return self(self); }; recursive(recursive);
Ну там рекурсия на уровне типов может быть

Не только исполнения

auto rec=[&] {return rec;};

И типа чо делатт

Лучше когда такое запрещено имхо

Antony
05.09.2018
19:17:03
Завёл для GCC https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87232 Автор в статье говорит что завёл сам для clang ( но я тикет не нашёл)
Народ в GCC знатно упоролся с этой задачей: https://gcc.gnu.org/bugzilla/attachment.cgi?id=44657 Респектуха им!

Кстати, а естьу кого-нить книга Hacker's Delight book в электронном виде?

Alexander
05.09.2018
19:24:22
Кстати, а естьу кого-нить книга Hacker's Delight book в электронном виде?
https://doc.lagout.org/security/Hackers%20Delight.pdf https://github.com/jyfc/ebook/blob/master/02_algorithm/Hacker's%20Delight%202nd%20Edition.pdf #books

Ilia
05.09.2018
19:24:49
Боокз! Боокз!

Тэг ставь!

Google
Constantine
05.09.2018
21:01:09
И типа чо делатт
Ну это же то же самое, что попытаться еще не вычисленное что-то из auto вернуть

Constantine
05.09.2018
21:02:10
А это как сделать?
ну там можно попробовать auto f() { return &f; }

Павел
05.09.2018
21:48:08
Привет ребять, это не реклама (проект OpenSource), те кто хочет разобраться с libevent, или сокетами могут затестить и проанализировать код вот этого проекта: https://github.com/CoZZmOnAvT/42chat , буду очень благодарен, если проследуете инструкции в описании проекта и присоеденитесь к беседе внутри даного приложения :)

Павел
05.09.2018
21:51:48
Всё очень просто, sockets механизм разработаный linus'ом Torvalds'oм изначально для C, плюс C++ не даёт должной производительности из-за высокого уровня абстракции, что насчёт rust'a - в раздумиях про написания аналога на этом языке

Павел
05.09.2018
21:54:32
Это вовсе не чушь, к чему этот сарказм?

Vladislav
05.09.2018
21:54:46
Ruslan
05.09.2018
21:54:54
Голословные заявления - чушь

Павел
05.09.2018
21:55:00
Это же вполне не сложная логика - чем выше уровень абстракции, тем ниже производительность

Хорошо, аргументируй, сударь

Ruslan
05.09.2018
21:55:21
А давай ты приведешь, поскольку заявления твои

Alexander
05.09.2018
21:55:25
Это вовсе не чушь, к чему этот сарказм?
А есть какие-то примеры из жизни, где С++ мешал тем, что он медленный, а Си в этом месте быстрый?

Ruslan
05.09.2018
21:55:30
Я видел дизасм плюсокода

Ruslan
05.09.2018
21:55:40
И могу сказать, что он бывает охеренно эффективный

Google
Павел
05.09.2018
21:55:52
Я видел дизасм плюсокода
Ничего себе, я тоже, представь себе) И не раз)

Ioann V
05.09.2018
21:55:54
Хорошо, аргументируй, сударь
Тише. Я против разборок. Я не считаю нужным этому человеку оправдываться. Саня его попросил аргументировать он так и сделал. Остальное за кулисы плис.

Ruslan
05.09.2018
21:56:08
Не веришь мне - посмотри на канале Jason Turner его видео

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