优秀代码

《1》

template<typename T>

class TSafeSingleton

{

private: typedef T SingletonObj;

public: class TSafeCreator{

public:

TSafeCreator(){ TSafeSingleton<SingletonObj>::Instance();}

inline void Do(){} };

static TSafeCreator s_oCreator;

public:

static SingletonObj* Instance(){ static SingletonObj s_oT; s_oCreator.Do(); return &s_oT; } };

template <class T>

typename TSafeSingleton<T>::TSafeCreator TSafeSingleton<T>::s_oCreator;

《2》

struct create_convert_f
{
template<typename T>
create_convert_f(const T &format)
{
ss << format;
}

template<typename R>
operator R ()
{
R ret = R();

ss >> ret;
return ret;
}
private:
std::stringstream ss;
};

template<typename T>
static inline create_convert_f convert(const T &format)
{
return create_convert_f(format);
}

template<typename R ,typename T>
static inline R convert(const T &format)
{
return convert(format);
}

posted on 2012-02-17 17:02  小水人  阅读(161)  评论(0编辑  收藏  举报