首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >继承所有模板类型功能

继承所有模板类型功能
EN

Stack Overflow用户
提问于 2019-05-22 04:55:40
回答 1查看 24关注 0票数 0

我正在考虑创建模板类包装器,它应该继承所有的模板参数功能,并在其上添加一些东西。对于结构和类,这将是非常简单的

代码语言:javascript
复制
class foo{ void bar(){} };

template<class T>
class baz : public T { void zab(){} };

int main(){
    baz<foo> a;
}

现在,我的问题是,是否有任何方法能够保持内置整数类型的运算符,而不是大量的手动专门化模板,以便这些类型能够这样做:

代码语言:javascript
复制
int main(){
    baz<int> a;
    int b = a + 2;
}

这是可以做到的吗?如果是这样的话,是怎么做的?(我知道这将有必要通过一些神奇的专业化来实现。我只是在问,是否可以通过一个部分专业化来实现这一点)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-22 06:59:16

有了SFINAE friend类,你可以通过模板减少专业化:

代码语言:javascript
复制
template <class T, typename Enabler = void>
class baz : public T { void zab(){} };

// specialization for integral type
template <class T>
class baz<T, std::enable_if_t<std::is_integral<T>::value>>
{

    friend auto operator + (T lhs, T rhs) { /*..*/}
    operator T() const { return value; }
    // ...

    T value;
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56246248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档