C/C++教程

C++:enable_if与模板偏特化的学习与实践

本文主要是介绍C++:enable_if与模板偏特化的学习与实践,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

由于项目的的旧代码不堪入目,只能一块块进行重构,最近找一个结构换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
{


}

 

这篇关于C++:enable_if与模板偏特化的学习与实践的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!