- 1
- 2
- 3
- 4
- 5
void tick(void)
{
for (auto&& x : registry.objects)
(x? std::function<void(void)>([&](void) {((IObject*)(x))->tick(); }) : [&]() {})();
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
void tick(void)
{
for (auto&& x : registry.objects)
(x? std::function<void(void)>([&](void) {((IObject*)(x))->tick(); }) : [&]() {})();
}
Мозг сказал что "((IObject*)(x))->tick();" написать слишком сложно и повелел написать вот это.
Скобочка умеет:
* Превратить плавающего питуха в неплавающего (довольно сложная операция на самом деле) или расширить маленькое целое до большого
* Заставить компилятор считать указатель на FOO указателем на BAR
* Убрать const (как заметил Брмнд)
Для трех таких разных хуйней всего один оператор. Это плохо. Крестобляди решили, что лучше иметь три явных оператора
https://cs10.pikabu.ru/post_img/big/2018/05/08/4/152575887213616023.jpg
Или случайно кастанешь указатели на не имеющие отношения друг к другу классы.
А в сишечке шоблоёбло не бывает, так что если это .h и там код -- то это стопудово С++, и тогда там не место скобочкам
З.Ы. О как, он даже показывает какой именно каст тут бы подошёл.