模板类限制[重复]

2023-12-31

我想知道是否有任何方法可以限制使用自定义条件为模板生成代码,在我的情况下,我想仅当模板类 T 已由类 bar 继承时才调用 foo 函数(类似这样)

template <class T:public bar> void foo()
{
    // do something
}

你可以限制T尽管使用“替换失败不是错误”(SFINAE):

template <typename T>
typename std::enable_if<std::is_base_of<bar, T>::value>::type foo()
{

}

If T不是源自bar,函数模板的特化将会失败,并且在重载决策期间不会考虑它。std::enable_if and std::is_base_of是即将发布的修订版 C++0x 中添加的 C++ 标准库的新组件。如果您的编译器/标准库实现尚不支持它们,您还可以在 C++ TR1 或 Boost.TypeTraits 中找到它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模板类限制[重复] 的相关文章

随机推荐