namespace gtl{
    inline int getTypeMaster()
    {
        static int v=0;
        return ++v;
    }
    template<class T>
    inline int getType()
    {
        static int value=0;
        if(value)
            return value;
        return value=getTypeMaster();
    }
}
class _any
{
public:
    class _data
    {
    public:
        _data():type(0){};
        int type;
    };
    template<class T>
    class _data_sub:public _data
    {
    public:
        _data_sub(T in):data(in)
        {
            type=gtl::getType<T>();
        };
        T data;
    };
    _data* tmp;
    template<class T>
    T getSafe()
    {
        if(!tmp->type || tmp->type!=gtl::getType<T>())
        {
            return T();
        }
        return (static_cast<_data_sub<T>* >(tmp))->data;
    }
    template<class T>
    T& get()
    {
        return (static_cast<_data_sub<T>* >(tmp))->data;
    }
    template<class T>
    _any(T in)
    {
        tmp=new _data_sub<T>(in);
    }
    ~_any()
    {
        delete tmp;
    }
};

Posted by Genesis

카테고리

분류 전체보기 (52)
The, 내 생각 (3)
The, 다른 눈 (1)
The, 겔러리 (14)
책 구절 (9)
잡동사니 (13)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

태그목록

달력

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

글 보관함