Szablonowe dedukcje argumentów dla wskaźników funkcji składowych
Wiadomo, że argumenty szablonu mogą być wskaźnikami do funkcji składowych.
Mogę więc napisać:
struct Bar
{
int fun(float x);
};
template <int (Bar::*FUN)(float)>
struct Foo
{ /*...*/ };
typedef Foo<&Bar::fun> FooBar;
Ale co, jeśli chcęBar
wpisz się jako argument szablonu:
template <typename B, int (B::*FUN)(float)>
struct Foo
{ /*...*/ };
typedef Foo<Bar, &Bar::fun> FooBar;
Teraz, kiedy go używam, muszę pisaćBar
dwa razy!
Moje pytanie brzmi: czy istnieje sposób zmuszenia kompilatora do automatycznego wywnioskowania typu klasy?
Celem jest, aby to działało:
typedef Foo<&Bar::fun> FooBar;
typedef Foo<&Moo::fun> FooMoo;