template<typename T>
Variant(const T &v): store(new Store<typename std::remove_cv<T>::type>(v)) { }
Variant(const Variant &v): store(v.store ? v.store->clone() : 0) { }
template<typename T>
Variant(const T &v): store(new Store<typename std::remove_cv<T>::type>(v)) { }
Variant(const Variant &v): store(v.store ? v.store->clone() : 0) { }