C++ std::函数是否和使用auto一样有效?

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是否有我应该警惕的开销?我不经常用它;只有在执行递归时。使用会产生成本,您可以阅

假设我有一个我想要定义的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
是否有我应该警惕的开销?我不经常用它;只有在执行递归时。

使用会产生成本,您可以阅读此成本的详细讨论。

是的,类型擦除会产生成本。