C++20中引入了“concept”概念,可以方便地对模板参数进行约束,但在此之前,可以使用“requires expression”来对模板进行限制。对于这个问题,可以按照以下方式进行解决:
template
void func(T val)
{
// 使用requires expression限制模板参数必须是可调用对象
static_assert(std::is_invocable_v, "T must be invocable");
// 其余函数逻辑
}
这个示例代码中,使用“is_invocable_v”对模板参数进行判断,确保其为可调用对象。如果不满足该条件,则在编译时会将错误信息输出到控制台。这样即可实现利用“requires expression”对模板参数进行限制的效果。