Variants aren't even intrinsic to C++.

The closest it has is a union, but that still assumes you know what type you're reading out of it - it won't convert for you.

VARIANT is part of COM, I think (it's there for pointerless languages I think).