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