暗黙の型変換付のboost::anyとか

struct base{
    struct inner_base{
        virtual inner_base*clone(){return new inner_base;};
        virtual ~inner_base(){}
    };
    template<typename T>
    struct inner_derived : inner_base{
        typedef T member_type;
        T value;
        inner_derived(const T&value):value(value){}
        inner_derived*clone(){return new inner_derived(value);}
    };
    inner_base*value;
    template<typename T>base(const T&value):value(new inner_derived<T>(value)){}
    base(const base&value):value(value.value->clone()){}
    base&operator=(base b){swap(b);return *this;}
    base():value(new inner_base){}
    ~base(){delete value;}
    void swap(base&b){inner_base*p=value;value=b.value;b.value=p;}
    template<typename T>operator T&(){return dynamic_cast<inner_derived<T>&>(*value).value;}
};
#include<iostream>
int main(){
    base tmp=1;
    int value = tmp;
    std::cout << value;
}