【发布时间】:2017-01-11 05:22:51
【问题描述】:
#include <functional>
int f(int x)
{
return 0;
}
int main()
{
std::function<int(int)> fn1 = f; // ok
std::function<int(int)> fn2 = static_cast<int(*)(int)>(f); // ok
//
// error C2066: cast to function type is illegal
//
std::function<int(int)> fn3 = static_cast<int(int)>(f);
}
我的 C++ 编译器是 VS 2015 Update 3。
我只是想知道:
为什么 C++ 标准不允许std::function<int(int)> fn3 = static_cast<int(int)>(f);?
背后的原理是什么?
【问题讨论】:
标签: c++ function compiler-errors type-conversion standards