Blog Post: Beating std::visit Without Really Trying

Johan Engelen j at
Sat Oct 5 08:50:21 UTC 2019

On Saturday, 5 October 2019 at 02:59:58 UTC, Paul Backus wrote:
> I was curious how C++17's std::variant compared to the options 
> we have in D, like Algebraic and SumType, so I did a simple 
> comparison of the generated assembly for each of them. You can 
> read about it at the link below. And as you can probably guess 
> from the title, D comes out ahead, in the end.
> This is my first attempt at sharing something like this, so any 
> comment or feedback is very much appreciated!

It'd be interesting if you could investigate the case of 
non-trivial lambdas, where inlining the lambdas is not 
profitable. Perhaps easiest if you call opaque (declaration-only) 
functions in the visit list.

Conclusion, performance-wise:
- SumType is great
- std::visit is OK'ish
- D Algebraic is terrible
Do you agree?


More information about the Digitalmars-d-announce mailing list