我想编写一个函数来测试传入函数的运行时间。我使用模板使其适用于许多函数。
我省略了计时代码。就像这样:
template<typename F>
void get_run_time(F func)
{
//time start
func;
//time end
}
但是,如果我传递的函数是void
类型,它会报错并提示我添加F=void
。
我尝试添加它,但没有起作用。我可以将void
更改为bool
,但这非常奇怪。
另一个问题是我想测试一个函数的时间并正常运行整个代码。所以我增加了返回值。 像这样:
template<typename F>
F get_run_time(F func)
{
//time start
F tf=func;
//time end
return tf;
}
但实际测试时间显然是错误的。我猜测它在返回函数时开始运行。它如何在继续执行以下代码之前获得运行结果?
()
的func;
没有任何效果。 - Jasonfunc;
实际上是一个空操作,它只评估该指针的值(指向的函数的地址),然后忽略结果。 - Remy Lebeau