有谁知道如何为下一个模板专业化声明通用模板表单:
template <template <class> class Container,
class Value,
class Return,
Return (Container<Value>::*Apply)(const Value &)>
class Example<Container<Value>, Apply>
{
};
Apply
必须是指向成员函数的指针,在模板声明中,签名是未知的。
答案 0 :(得分:0)
你的意思是这样吗?
template<typename... U>
struct T {
int f(int, char) { return 42; }
};
template<typename T, typename F>
struct S;
template<template <typename...> class C, typename R, typename... A>
struct S<C<A...>, R(A...)> {
using Apply = R(C<A...>::*)(A...);
// ...
};
int main() {
S<T<int, char>, int(int, char)>::Apply apply = &T<int, char>::f;
}
举个例子:
@Override
public void onMessageReceived(RemoteMessage remoteMessage)
{
Log.d("FROM", "From: " + remoteMessage.getFrom() );
sendNotification(remoteMessage.getNotification().getBody());
}
确实非常难看,但这就是OP(也许)所要求的。