【发布时间】:2020-11-15 17:03:03
【问题描述】:
试图找到另一种方法来简单地序列化我的代码,我有一个愚蠢的想法来尝试这个不可能的事情。但它奏效了。我真的很想知道为什么:
template <typename C>
void f(C c)
{
int a = 1;
float b = 1.5f;
c(a);
c(b);
}
int main()
{
f([](auto v){
std::cerr << v << "\n";
});
return 0;
}
我查看了生成的程序集 (g++-9.3 -O0 -g -S -fverbose-asm test.cpp -o test.s),似乎生成了两个不同的 lambda:一个采用浮点数,而另一个取整数。这是黑魔法吗?有没有人知道标准并且可以对此进行更多解释?
【问题讨论】: