4
template< typename ... Args >
class Message {
public:
    Message( Args&& ... args ) {
        mArgs = std::make_tuple( args ...  );
    }

    std::tuple< Args ... > mArgs;
    typedef std::function< void ( Args ... ) > HandlerType;

    void Consume( HandlerType handler ) {
        // handler( mArgs ); 
        // How does one unpack this?
    }
};

// Testing code
Message<int, int> msg(1, 2);

msg.Consume( [] ( int i, int j ) {
    std::cout << i << ',' << j << '\n';
});

メッセージと引数に単純なテンプレート化されたインターフェイスを提供しようとして、単純なメッセージ パッシング API を試みています。引数を関数に渡したいときに問題が発生しています。

私は可変個引数テンプレートをあまり使用したことがなく、私の問題に対するエレガントな解決策があるかどうか疑問に思っていました。

4

2 に答える 2