Синтаксис обслуживания Tensorflow C ++

Сейчас я изучаю Tensorflow Serving и пытаюсь создать Custom Servable.

Итак, я прочитал код о hashmap_source_adaptor (это пример кода в Tensorflow Serving).

Но есть некоторый код, я не могу понять.

HashmapSourceAdapter::HashmapSourceAdapter(
const HashmapSourceAdapterConfig& config)
: SimpleLoaderSourceAdapter<StoragePath, Hashmap>(
[config](const StoragePath& path, std::unique_ptr<Hashmap>* hashmap) {
return LoadHashmapFromFile(path, config.format(), hashmap);
},
// Decline to supply a resource footprint estimate.
SimpleLoaderSourceAdapter<StoragePath,
Hashmap>::EstimateNoResources()) {}

HashmapSourceAdapter::~HashmapSourceAdapter() { Detach(); }

Что означает [config] в строке 4?

Дайте мне идею или подсказку, чтобы искать об этом.

Код источника находится по этой ссылке. и я не могу понять строку 70.
https://github.com/tensorflow/serving/blob/master/tensorflow_serving/servables/hashmap/hashmap_source_adapter.cc#L70

Благодарю.

1

Решение

[config] список захвата для лямбда-выражения Поскольку не указано иное, он фиксирует config по значению. Это копирует все config относится и делает его видимым внутри лямбды.

Захватив config необходимо, потому что код в лямбда-выражении использует config:

вернуть LoadHashmapFromFile (путь, конфиг.format (), hashmap);

За config чтобы означать что-то внутри лямбда-выражения, оно должно быть захвачено. В частности, лямбда-выражение — это, по сути, сокращение для создания класса. Все в списке захвата (которое фактически используется внутри лямбда-выражения) становится параметром, который передается в ctor для этого класса (а тело лямбда-выражения становится телом перегрузки operator()() для этого класса).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]