#include <iostream>
#include <string>
#include <boost/variant.hpp>
template <typename... Types>
struct my_variant : public boost::variant<Types...>
{
using boost::variant<Types...>::variant;
auto operator=(const char* rhs)
{
return boost::variant<Types...>::operator=(std::string(rhs));
}
};
int main() {
my_variant<std::string, void const*> foo;
foo = "bar";
std::cout << foo.which();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Ym9vc3QvdmFyaWFudC5ocHA+CgoKdGVtcGxhdGUgPHR5cGVuYW1lLi4uIFR5cGVzPgpzdHJ1Y3QgbXlfdmFyaWFudCA6IHB1YmxpYyBib29zdDo6dmFyaWFudDxUeXBlcy4uLj4KewoJdXNpbmcgYm9vc3Q6OnZhcmlhbnQ8VHlwZXMuLi4+Ojp2YXJpYW50OwoJYXV0byBvcGVyYXRvcj0oY29uc3QgY2hhciogcmhzKQoJewoJCXJldHVybiBib29zdDo6dmFyaWFudDxUeXBlcy4uLj46Om9wZXJhdG9yPShzdGQ6OnN0cmluZyhyaHMpKTsKCX0KfTsKCmludCBtYWluKCkgewoJbXlfdmFyaWFudDxzdGQ6OnN0cmluZywgdm9pZCBjb25zdCo+IGZvbzsKCWZvbyA9ICJiYXIiOwoJc3RkOjpjb3V0IDw8IGZvby53aGljaCgpOyAKCXJldHVybiAwOwp9