Hacker News new | ask | show | jobs
by Panzerschrek 30 days ago
Putting loops inside virtual functions can't work in any cases. Like when a heterogenous collection is iterated and a virtual call is performed for each object.

In such cases I prefer using std::variant instead of inheritance, but this works only if all possible types are known ahead of time.

1 comments

Heterogenous containers are a performance killer for all kinds of other reasons.

A vector of variants still wouldn't be optimal. Better to use something like

https://www.boost.org/doc/libs/latest/doc/html/poly_collecti...

Yeah, no human would work like that. You wouldn't write a sentence for a letter, then go shopping for a single item, then write another sentence, go shopping again, then flush the toilet ...
> A vector of variants still wouldn't be optimal

Transpose.