Меня всегда беспокоила особенность лямбда-выражений C++: тип лямбда-выражения C++ уникален и анонимен, я просто не могу его записать. Даже если я создам две лямбды, которые синтаксически совершенно одинаковы, результирующие типы будут определены как разные. Следствием этого является то, что а) лямбды могут передаваться только в шаблонные функции, которые позволяют передавать время компиляции, невыразимый тип вместе с объектом, и б) лямбды полезны только после того, как их тип стерт с помощью std::function.
Хорошо, но именно так это и происходит в C++, я был готов списать это на просто утомительную особенность этого языка. Однако я только что узнал, что Rust, похоже, делает то же самое: каждая функция или лямбда Rust имеет уникальный анонимный тип. И теперь мне интересно: почему?
Итак, мой вопрос заключается в следующем:
Какова польза, с точки зрения языкового дизайнера, от введения в язык концепции уникального анонимного типа?
Подробнее здесь: https://stackoverflow.com/questions/631 ... mous-types