有没有办法使用 C++17 折叠表达式来实现这一点?

JWe*_*ove 2 c++ expression fold c++17

想象一下我有这个模板类。

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.
    }
};
Run Code Online (Sandbox Code Playgroud)

我希望能够call_handler为每种TMessageHandler类型调用静态并返回返回值的 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);
    }
};
Run Code Online (Sandbox Code Playgroud)

是否可以使用折叠表达式来实现?

Jar*_*d42 6

语法应该是:

static bool call_handler(const MessageType& command)
{
    return (... || TMessageHandler::call_handler(command));
}
Run Code Online (Sandbox Code Playgroud)