小编Jav*_*imi的帖子

C++ 模板类错误:函数返回函数

我想制作一个简单的记录器,它自动运行函数并返回其值。
该类定义为:

template <typename R, typename... Args>
class Logger3
{

    Logger3(function<R(Args...)> func,
            const string& name):
        func{func},
        name{name}
    {}
    R operator() (Args ...args)
    {
        cout << "Entering " << name << endl;
        R result = func(args...);
        cout << "Exiting " << name << endl;
        return result;
    }
    function<R(Args...)> func;
    string name;
};
Run Code Online (Sandbox Code Playgroud)

我想将以下简单add函数传递给记录器:

int add(int a, int b)
{
    cout<<"Add two value"<<endl;

    return a+b;
}
Run Code Online (Sandbox Code Playgroud)

通过这样调用它:

auto caller = Logger3<int(int,int)>(add,"test");
Run Code Online (Sandbox Code Playgroud)

但是,它会产生以下错误:

error: function returning a function
  133 |     Logger3(function<R(Args...)> …
Run Code Online (Sandbox Code Playgroud)

c++ templates std-function

5
推荐指数
2
解决办法
294
查看次数

标签 统计

c++ ×1

std-function ×1

templates ×1