读书人

一个模板特化的有关问题[HELP]

发布时间: 2012-03-26 15:46:56 作者: rapoo

一个模板特化的问题[HELP]
template <typename TFunction >
class Delegate
{
...........
};

针对1个参数的成员函数 对它进行特化

template <typename Treturn,typename Tclass,typename TPara1>
class Delegate <Treturn Tclass::(Tpara1) >
{
............
}

在代码中这样调用(特化的模板类中有相应的构造函数)
Delegate <int (test::*)(int)> x(&t,&t::go,1);

通不过啊 模板头文件报错 谁看看这个语法有什么问题 还是cpp不支持这么推导啊?

[解决办法]
这个要用偏特化吗? 不太理解. 也许你要这样?

// test.cpp
// xp + vc-7_1
// cl -EHsc test.cpp

#include <iostream>

template <class R, class T, class P>
class delegate {
public:
delegate(T & t, R (T::*fn)(P), P const & p)
: t_(t),
fn_(fn),
p_(p) { }

R call() {
return (t_.*fn_)(p_);
}
private:
T & t_;
R (T::*fn_)(P);
P p_;
};

// --------

class test {
public:
double foo(int x) {
return static_cast <double> (x);
}
};

int main() {
delegate <double, test, int> d(test(), &test::foo, 100);
std::cout < < d.call() < < std::endl;
return 0;
}

读书人网 >C++

热点推荐