public:
Variant() = default;
template<typename T>
Variant(const T &v): store(new Store<typename std::remove_cv<T>::type>(v)) { }
public:
Variant() = default;
template<typename T>
Variant(const T &v): store(new Store<typename std::remove_cv<T>::type>(v)) { }