【发布时间】:2019-02-21 09:43:56
【问题描述】:
这里用一个小例子来说明两种不同的函数类型的区别:
#include <iostream>
#include <functional>
#include <type_traits>
template <typename T>
using BinaryOperator = T(const T&, const T&);
int main() {
std::cout << std::boolalpha
<< std::is_same<
std::function<int(const int&, const int&)>,
BinaryOperator<int>
>::value
<< std::endl;
return 0;
}
这打印出false,这让我很困惑。这两种类型似乎是等价的。它们有何不同?
【问题讨论】:
-
std::function是一个模板类,重载了operator (),它不是一个函数 -
template <typename T> using BinaryOperator = std::function<T(const T&, const T&)>;也一样。
标签: c++ templates template-meta-programming std-function type-deduction