由于项目的的旧代码不堪入目,只能一块块进行重构,最近找一个结构换json的开源库xpack,为了方便使用,对他封装了一下。
但是并不是所有结构体都可以直接使用xpack生成json串,结合最近学到的新东西,我对封装类进行了改造。
话不多说,先上代码:
#prama once template<typename T> struct is_x_pack { template<typename U,typename = decltype(U::xxx)> struct HELPS; template<typename U> static void Specify(HELPS<U,decltype(U::xxx)>); template<typename U> static bool Specify(...); const static bool is = std::is_void<Specify<U>(nullptr)>::value; }; //最终这个类在实例化的时候,会根据上面的规则来拦截实例化 template<typname T,typename = std::enable_if<is_x_pack<T>::is,bool>::type> sturct Parser : public T { }