C ++ вложенная лямбдаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C ++ вложенная лямбда

Сообщение Anonymous »

Я работаю над реализацией агрегатора данных с вложенными выражениями Lambda. Я еще не очень опытен с функциями Lambda, и я не уверен, что моя идея реализации реализуется. Тип данных этого частного вектора может быть определена с помощью параметра шаблона класса Multivalue . Я хочу предложить различные функции агрегации (сумма, гармоническое среднее, среднее, ...) для данных в векторе. Но: если тип векторных данных является кортежом, функции агрегации также должны быть доступны для компонентов кортежа. Следующая ссылка показывает мою первую попытку, которая еще не работает. Я надеюсь, что кто -то сможет объяснить мне, в чем проблема. Я думаю, что есть проблема с вложенными выражениями Lambda, я использую: < /p>

Код: Выделить всё

#include 
#include 
#include 
#include 

using namespace std;

template
std::ostream& operator decltype(std::get(k.subaggregators)) {
return std::get(k.subaggregators);
}
}

/** multivalue attribute implementation (inherits corresponding aggregation object) */
template
class Multivalue : public Aggregator {
public:
Multivalue() : Aggregator(&data, [](const T &value) { return value; }) { }
void append(const T& item) { data.push_back(item); }
private:
std::vector data;
};

int main() {
Multivalue mv;
mv.append(std::make_tuple(std::make_tuple(13, 12), 2.5, 3.5));
mv.append(std::make_tuple(std::make_tuple(1, 7), 2.55123, 1.5));
mv.append(std::make_tuple(std::make_tuple(5, 3), 2.312, 1.8));

auto &a1 = std::get(mv);
auto &a2 = std::get(mv);
auto &a3 = std::get(std::get(mv));
auto &a4 = std::get(std::get(mv));

std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/29614882/c-nested-lambda[/url]
Ответить

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

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

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

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

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