我想制作一个简单的记录器,它自动运行函数并返回其值。
该类定义为:
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)