【发布时间】:2021-02-26 10:47:42
【问题描述】:
想象一下我有这个模板类。
template <typename... TMessageHandler>
class message_handler_set
{
public:
static bool call_handler(const MessageType& command)
{
// Call each TMessageHandler type's 'call_handler' and return the OR of the returns.
}
};
我希望能够为每个TMessageHandler 类型调用静态call_handler 并返回返回值的OR。对于三种消息处理程序类型,代码将与此等价...
template <typename TMessageHandler1, typename TMessageHandler2, typename TMessageHandler3>
class message_handler_set
{
public:
static bool call_handler(const MessageType& command)
{
return TMessageHandler1::call_handler(command) ||
TMessageHandler2::call_handler(command) ||
TMessageHandler3::call_handler(command);
}
};
是否可以使用折叠表达式来实现?
【问题讨论】:
-
你试过
return ( TMessageHandler::call_handler(command) || ... )吗? (当然您需要将message_handler_set更改为可变参数。)
标签: c++ c++17 expression fold