优秀代码
《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);
}