【发布时间】:2012-07-31 17:28:58
【问题描述】:
众所周知,模板参数可以是指向成员函数的指针。
所以我可以写:
struct Bar
{
int fun(float x);
};
template <int (Bar::*FUN)(float)>
struct Foo
{ /*...*/ };
typedef Foo<&Bar::fun> FooBar;
但是,如果我希望 Bar 类型本身成为模板参数怎么办:
template <typename B, int (B::*FUN)(float)>
struct Foo
{ /*...*/ };
typedef Foo<Bar, &Bar::fun> FooBar;
现在,当我使用它时,我必须写两次Bar!
我的问题是:有没有办法强制编译器自动推断类类型?
目标是让它正常工作:
typedef Foo<&Bar::fun> FooBar;
typedef Foo<&Moo::fun> FooMoo;
【问题讨论】: