In languages where they are builtin they get used quite a lot to great effect, whereas this is cumbersome in C++, both with boost and the new std::variant stuff. "usable" might not cut it for something you want to use ubiquitously :)
It's good that C++ has this, but it hinders some programming patterns. Of course, C++ has other programming patterns that it's great at to compensate :)
In the next 10 years C++ might even grow another leg and incorporate them in the basic language (together with proper pattern matching).