C++ as a language is moving away from the classical, “Java style”, object-oriented programming.
Long gone are the days of grand, virtual hierarchies.
They’ve been replaced with standalone classes, free functions and type erasure.

And the benefits are clear:
Instead of reference semantics, they allow value semantics which are simpler and more natural for C++.
Instead of intrusive interface inheritance, they allow external duck-typing.

So in the spirit of this movement, let’s take a look at one OOP pattern and see if we can adopt it to this style:
the visitor pattern.

Now, there is some controversy about the proposal — especially by those who do serious graphics stuff.
Does the C++ standard library need 2D graphics?
Shouldn’t the committee focus on real issues instead of some toy library that is never going to be used for serious applications?

But I’m not here to rant about the stupid standard committee and the completely bloated and unusable standard library, like some do.
Instead, this discussion got me thinking:
What should be part of a language’s standard library?