ここで関数について説明した手法をメソッドに拡張しようとしています。問題は、メソッド シグネチャ テンプレート パラメータです。たとえば、sin 関数のラッパーは次のように作成されます。
template<typename Sig, Sig& S> struct wrapper;
template<typename Ret, typename... Args, Ret(&P)(Args...)>
struct wrapper<Ret(Args...), P> {
// blah
}
そしてインスタンス化されます
wrapper<decltype(sin), sin>
しかし、メソッドの場合、bool Foo::blah(int)
この手法は拒否されます。
template<class C, typename Sig, Sig& S> struct wrapper;
template<class C, typename Ret, typename... Args, Ret(C::*P)(Args...)>
struct wrapper<Ret(C::)(Args...), P> {
// blah
}
wrapper<decltype(Foo::blah), &Foo::blah>
では、適切な構文は何ですか?