Standalone C++11 implementation of variant