如何在std :: function中定义默认参数?

时间:2019-03-22 19:35:52

标签: c++ c++14

我有以下两个课程:

Class Client
{
    ...
    void defineFunctorAndHitServer()
    {
        std::function<void(const std::vector<uptr<Stuff>>& things, 
            const char *statusMessage = MESSAGE_SUCCESS,
            const int statusCode = STATUS_CODE_NO_ERROR)> completionHandler(
                [](
                    const std::vector<uptr<Stuff>>& things,
                    const char *statusMessage = MESSAGE_SUCCESS,
                    const int statusCode = STATUS_CODE_NO_ERROR
                  ) {
                        // do something awesome ad hoc
                    }
         );
         // instance of class Server
         serverInstancePtr->doSomethingAndCallbackClientFunctor(completionHandler);
    }
}
Class Server
{
    ...
    void doSomethingAndCallbackClientFunctor(std::function<void(const std::vector<uptr<Stuff>>&, const char* = MESSAGE_SUCCESS, const int = STATUS_CODE_NO_ERROR)> completionHandler)
    {
        std::vector<uptr<Stuff>> myThings;
        // populate myThings
        completionHandler(myThings);
    }
}

的想法是,如果省略的填充操作成功,则仅使用向量从Server调用完成处理程序,否则使用状态消息和状态代码进行调用,以帮助进行日志记录/调试。

我以为我可以仅使用向量arg来调用Server中的functorcompleteHandler,因为其他两个参数都是默认参数,但是编译器在completionHandler下给我一个混乱的说法,称“被调用的对象不是函数”。这是怎么了如果这行不通,那么如何才能实现类似的功能,其中在每种情况下都不需要给函子的所有参数赋予具体的参数?

0 个答案:

没有答案