作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个主模板,我需要根据元函数对其进行专门化。通常的成语是like
template<class T,class E = void>
struct foo { };
template<class T>
struct foo<T,std::enable_if_t<is_xxx<T>{}> > {};
但是,我有一种情况,主模板写成
template<class T>
struct foo { };
(即没有那个额外的 SFINAE 占位符)并且我不允许更改它。基于特征对其进行专门化的最佳方法是什么(就像我主要针对基于返回类型或附加参数的函数模板那样做)?
最佳答案
你可以添加一个基类:
template<class T, class E = void>
struct foo_base { };
template<class T>
struct foo : foo_base<T, std::enable_if_t<is_xxx<T>{}>> { };
然后将 foo
的所有成员移动到 foo_base
中。
关于c++ - 如何专门化基于 bool 元函数的类模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21577387/
我有一个带有模板函数的基类,该函数具有通用模板类型和专用版本。 #ifndef BASE_CLASS #define BASE_CLASS #include using namespace std;
我有这个 3D vector 模板 template class Vec3TYPE{ public: union{ struct{ TYPE x,y,z; }; struct{ TY
我是一名优秀的程序员,十分优秀!