Есть ли какая -либо цель объявления Lambda, за которым следует немедленно вызов для инициализации локальной переменной, C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Есть ли какая -либо цель объявления Lambda, за которым следует немедленно вызов для инициализации локальной переменной,

Сообщение Anonymous »

template
static const Metatype* get_metatype() {
static const Metatype* mt = []() {
constexpr size_t name_hash = Metatype::build_hash().name_hash;

auto type = metatype_cache.find(name_hash);
if (type == metatype_cache.end()) {
constexpr Metatype newtype = Metatype::build();
metatype_cache[name_hash] = newtype;
}
return &metatype_cache[name_hash];
}();
return mt;
}
< /code>

variable mt < /em> инициализирован с помощью возвращаемого значения Lambda. Почему бы просто не извлечь код Lambda и не сделать его частью функции get_metatype (), а затем просто вернуть его значение? Это какой -то трюк или что ??

Этот код из Decs https://github.com/vblanco20-1/decs, который я изучаю в образовательных целях.

Подробнее здесь: https://stackoverflow.com/questions/611 ... ation-to-i
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»