我想知道是否有任何方法可以限制使用自定义条件为模板生成代码,在我的情况下,我想仅当模板类 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(使用前将#替换为@)