C++ 如何使用std::invoke\u result\t获取函数的返回类型
我正在尝试为_each()实现一个有味道的C++ 如何使用std::invoke\u result\t获取函数的返回类型,c++,c++17,C++,C++17,我正在尝试为_each()实现一个有味道的,,当传入的函数返回false时,它将停止迭代。如果传入的函数没有返回布尔值,则作为std::for_each()运行 我在获取返回的函数参数类型时遇到一些困难,我尝试使用std::invoke\u result\t,但它抱怨: std::uu 1::invoke_result中没有名为'type'的成员问题“如何使其工作”的第一部分的答案是包含参数类型-在本例中,可能类似于std::invoke_result\t 至于“类型F不应该已经包含整个函数的所
,
,当传入的函数返回false
时,它将停止迭代。如果传入的函数没有返回布尔值,则作为std::for_each()
运行
我在获取返回的函数参数类型时遇到一些困难,我尝试使用std::invoke\u result\t
,但它抱怨:
std::uu 1::invoke_result中没有名为'type'的成员问题“如何使其工作”的第一部分的答案是包含参数类型-在本例中,可能类似于
std::invoke_result\t
至于“类型F不应该已经包含整个函数的所有类型信息吗?”——正如另一位评论员所提到的,
F
可能是一个具有多个操作符()
重载的函数对象,因此答案是否定的。请添加main函数,以显示使用for_的示例。每个F
可以有多个操作符()
重载和不同的参数列表。您需要指定参数,以便编译器知道您需要哪个参数。看起来您可能需要std::invoke\u result\t
很抱歉延迟太久。std::调用\u结果\u工作正常。现在我意识到一个函数对象可以有几个运算符()采用不同的类型。