Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用std::invoke\u result\t获取函数的返回类型_C++_C++17 - Fatal编程技术网

C++ 如何使用std::invoke\u result\t获取函数的返回类型

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不应该已经包含整个函数的所

我正在尝试为_each()实现一个有味道的
,当传入的函数返回
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工作正常。现在我意识到一个函数对象可以有几个运算符()采用不同的类型。