use*_*192 5 c++ lambda templates c++11
我正在学习c ++ 11,特别感兴趣的是lambda.
经过一些练习,我认为lambda闭包是一个无名的函数对象.
所以我写了这段代码.
template <class callable_object>
void lambda_caller( callable_object lambda )
{
std::cout<< sizeof(lambda) << endl;
lambda();
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用std::function
而不是使用模板,但我不希望在进行类型转换时的开销.
但我发现一个问题就是读这个问题:为什么我不能在C++ 11中创建一个lambda向量?
回答说:"每个lambda都有不同的类型 - 即使它们有相同的签名."
编译器为不同的类生成不同的代码.
因此,我认为lambda_caller
只要我将lambda的另一个定义传递给我,我的编译器就会生成另一个版本.
有没有办法避免它,除了使用std::function
?lambda闭包没有任何泛型类型吗?
归档时间: |
|
查看次数: |
1568 次 |
最近记录: |