【发布时间】:2012-02-23 12:38:58
【问题描述】:
对于共享公共基类的类的以下代码段中的 doIt() 方法,我很感激帮助,如下所示
#include <iostream>
#include <boost/utility.hpp>
#include <boost/type_traits.hpp>
struct BarBase {};
struct Bar: BarBase {};
struct FooBase {};
struct Foo: FooBase {};
template <typename T>
struct Task
{
// I'd like to specialize this method for classes with a common base class
void doIt();
};
// my attempt (does not compile)
template <typename T>
typename boost::enable_if<boost::is_base_of<FooBase, T> >::value
doIt() {
std::cout << "Type is derived from FooBase\n";
}
int main()
{
Task<Foo> f;
f.doIt();
}
【问题讨论】:
-
我认为你不能专门化类模板成员函数,你必须专门化类。