已知模板參數可以是指向成員函數的指針。成員函數指針的模板參數推導
因此我可以這樣寫:
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