已知模板参数可以是指向成员函数的指针。成员函数指针的模板参数推导
因此我可以这样写:
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;
其实,我使用丑陋的宏(这是一个库内部的模板,所以没有被误用的真正风险)。无论如何,'member_ptr_traits'非常棒,因为我实际上需要'T'类型。 – rodrigo 2012-07-31 19:38:04