Size: a a a

2021 July 15

ip

illya palkin in supapro.cxx
Особенно когда тебе нужно делать диспатчинг в больше чем 1 месте и у тебя эта сотня свит-кейсов по всей кодовой базе
источник

AF

Aidar Fattakhov in supapro.cxx
Ну тут так же сотня методов в визиторе
источник

LA

Liber Azerate in supapro.cxx
Буквально недавно писал, не то что видел :)
источник

с

смкх in supapro.cxx
можно еще около-rangи накостылить, если стандарт не 20
источник

LA

Liber Azerate in supapro.cxx
Так-то я писал это только потому, что нет библиотечной части С++17 на проде пока что, но всё же
источник

 P

 ‌‌Gleb Pilipets... in supapro.cxx
а если бы была?
источник

 P

 ‌‌Gleb Pilipets... in supapro.cxx
то как тогда?
источник

ip

illya palkin in supapro.cxx
Но не сотня свитч-кейсов в каждой ф-и где приходит объект с иерархии
источник

AF

Aidar Fattakhov in supapro.cxx
А такого я никогда не видел
источник

LA

Liber Azerate in supapro.cxx
std::variant + std::visit. Впрочем, если множество типов велико, тоже бы визитор написал, пожалуй
источник

 P

 ‌‌Gleb Pilipets... in supapro.cxx
так буст можно подтянуть - я вот подтянул boost::variant2
источник

LA

Liber Azerate in supapro.cxx
У нас не очень жалуют буст, да и зачем, если ещё через недолгое время мы таки подтянем на прод и библиотечную часть С++17, а после и часть С++20
источник

ip

illya palkin in supapro.cxx
enum class AnimalType {
   Dog,
   Cat,
   Chicken
};

struct Animal {
   AnimalType GetType();
};

void ProcessAnimal(const Animal& animal);
void PrintAnimal(const Animal& animal);

Ну приходится в каждую ф-ю которая принимает Animal тащить свитч-кейс
источник

AF

Aidar Fattakhov in supapro.cxx
Доктор когда я так делаю мне больно
Не делайте
источник

TS

Till Schneider in supapro.cxx
для этого существует наследование и полиморфизм
источник

LA

Liber Azerate in supapro.cxx
Корутины? Генератор на корутинах
источник

ip

illya palkin in supapro.cxx
Ну я лишь говорю о том что видел)
источник

SS

Sergey Skvortsov in supapro.cxx
Есть
for (int i : range (0, 123))

range возвращает объект типа Range с begin / end, итератор реализуется тривиально
источник

ip

illya palkin in supapro.cxx
Но с наследованием то же самое получится. Просто будешь касты делать. (Если не юзать дабл диспатч)
источник

DP

Denis Paukaev in supapro.cxx
Вообще если ты пишешь функцию, которая принимает животное но хочет при этом для кота что то сделать, то это обычно означает что тут что то не так
источник