Я работаю с памятью некоторых lambdas в С++, но я немного озадачен их размером.
Вот мой тестовый код:
#include <iostream>
#include <string>
int main()
{
auto f = [](){ return 17; };
std::cout << f() << std::endl;
std::cout << &f << std::endl;
std::cout << sizeof(f) << std::endl;
}
Вы можете запустить его здесь: http://fiddle.jyt.io/github/b13f682d1237eb69ebdc60728bb52598
Вывод:
17
0x7d90ba8f626f
1
Это говорит о том, что размер моей лямбда равен 1.
-
Как это возможно?
-
Не должен ли лямбда быть, как минимум, указателем на его реализацию?