小编JLM*_*JLM的帖子

C++20概念:需要表达和完美转发

仅供参考:C++17 std::is_invocable_v 完全符合我的预期。

想象一个概念来检查是否可以使用特定参数类型调用可调用对象:

template <typename Fn, typename... Args>
concept has_request_interface = requires (Fn request, Args&&... args)
{
    { std::invoke(request, std::forward<Args>(args)...) }-> Status;
};
Run Code Online (Sandbox Code Playgroud)

相对

template <typename Fn, typename... Args>
concept has_request_interface = requires (Fn request, Args... args)
{
    { std::invoke(request, args...) }-> Status;
};
Run Code Online (Sandbox Code Playgroud)

在 requires 表达式中使用完美转发有意义吗?

在我看来答案是肯定的,因为请求可调用对象可能需要某些参数的右值。

但是它的requires (Fn request, Args... args)行为是否作为关于 的左值性质的函数声明args...

c++ c++-concepts c++20

6
推荐指数
1
解决办法
261
查看次数

标签 统计

c++ ×1

c++-concepts ×1

c++20 ×1