c++11 - C++例程返回函数

标签 c++11

我有以下代码可以正常工作。我试图理解语法。返回语句有 std::plus<double>() .此处的 double 具有返回值数据类型。但是函数定义的返回类型为 std::function<double(double, double)>这表示两个 double 参数。这两者有什么关系?

#include <functional>
#include <iostream>

using namespace std;

std::function<double(double, double)> GetFunction()
{
   return std::plus<double>();
}

int main()
{
   auto operation = GetFunction();

   int a = operation(1, 4);

   std::cout << std::plus<>{}(1, 4) << '\n';

   return 0;
}

最佳答案

存在从std::plus<double> 的隐式转换至 std::function<double(double,double)> , 因为前者有一个成员 call operator double operator()(double, double) .请参阅 std::function constructors 的文档.

关于c++11 - C++例程返回函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37649678/

相关文章:

c++ - 如何确定输出流链是否结束?

作为类成员的线程的 c++11 vector

c++ - N 个并发读者和 1 个生产者的成语或模式

C++11:条件变量只适用一次

c++ - 定义宏时 `(...)`是什么意思?

c++ - 空 vector 占用的空间是否与指向当前设置为 nullptr 的类型的指针一样多?

c++ - C++11 中的 checked_array_iterator<T>

c++ - 需要帮助在 C++ 中使用 stringstream 在一行中输入多个整数

c++ - TR1 提供的所有内容现在都可以在 C++14 中使用并且易于使用吗?

c++ - 复制省略并在返回值中移动语义