C++ std::函数是否和使用auto一样有效?
假设我有一个我想要定义的lambda。我可以这样做C++ std::函数是否和使用auto一样有效?,c++,c++11,lambda,C++,C++11,Lambda,假设我有一个我想要定义的lambda。我可以这样做 auto foo = [] (int x) { return x == 42; }; 或者这个, std::function<bool(int)> foo = [] (int x) { return x == 42; }; std::函数foo=[](int x) { 返回x==42; }; 做第二个有什么处罚吗?std::function是否有我应该警惕的开销?我不经常用它;只有在执行递归时。使用会产生成本,您可以阅
auto foo = [] (int x)
{
return x == 42;
};
或者这个,
std::function<bool(int)> foo = [] (int x)
{
return x == 42;
};
std::函数foo=[](int x)
{
返回x==42;
};
做第二个有什么处罚吗?
std::function
是否有我应该警惕的开销?我不经常用它;只有在执行递归时。使用会产生成本,您可以阅读此成本的详细讨论。是的,类型擦除会产生成本。