Не работает конструкция

275
22 мая 2017, 00:03

Здравствуйте! В первый раз столкнулся с такой конструкцией, как она называется и почему не работает:

nero_type result = [i, j] (nero_type temp1, nero_type temp2)->nero_type
                        {
                            temp1 = 10*i;
                            temp2 = 20*j;
                            return temp1+temp2;
                        };  //nero_type типа int
Answer 1

Называется это лямбда-выражением, но

  1. что-то она странно у вас написана - зачем ей параметры, которые ей не нужны? :)

  2. вы присваиваете result саму функцию, а не результат ее работы.

Думаю, что вы хотели на самом деле

int result = [](int i, int j){ return 10*i+20*j;}(i,j);

Вот:

#include <iostream>
int main()
{
    int i = 10, j = 20;
    int result = [](int i, int j){ return 10*i+20*j;}(i,j);
    std::cout << result << std::endl;
}

Update

Ну, вот я расписал, что есть что в вашей лямбда-функции

 val = std::accumulate(begin(src_images), 
                       end(src_images), 
                       koef_t(0.0), 
     [i, j] // Захватываются значения внешних переменных `i` и `j`
     (koef_t old_val, const neurons_line &image) // параметры функции
     -> koef_t // тип возвращаемого значения (обычно не нужен, выводится из `return`)
     { return old_val + (image[i] * image[j]); } // Тело функции
                     );
READ ALSO
Как создать текст с контуром на изображении RGB в буфере?

Как создать текст с контуром на изображении RGB в буфере?

Есть буфер с байтами RGB (раcжатый jpeg кадра с веб-камеры, без альфы, естественно)Нужно заменить часть этих байт (правый верхний угол) байтами...

366
Вызов шаблонной функции через Qtconcurrent::run

Вызов шаблонной функции через Qtconcurrent::run

Есть шаблонная функция:

438
Проблема с алгоритмом

Проблема с алгоритмом

Нужно построить алгоритм с временем работы O(mn)На вход подается список положительных целых чисел a_1, a_2,

303