170 похожих чатов

Typedef int (*addIntFunction) (const int a, const int b); addIntFunction f

= [](const int a, const int b) -> int {
return a + b;
}
А можно ткнуть носом что тут не так? Вроде совпадают типы

16 ответов

4 просмотра

Здесь всё в порядке. Не бери в голову

Miroslav-Belov Автор вопроса

А ругается error: expected expression before '[' token это вот про квадратные скобки и error: expected identifier before 'int' это вот про -> int. Это уже надо гуглить как лямбдами пользоваться?

Miroslav Belov
А ругается error: expected expression before '[' t...

У тебя какой стандарт в компиляторе?

Miroslav-Belov Автор вопроса
Liber Azerate
У тебя какой стандарт в компиляторе?

А как это выяснить? Сделал gcc -dM -E. Вот что вышло (то, что интересно вроде) #define __GNUC__ 9 #define __STDC__ 1 #define __STDC_VERSION__ 201710L Вот __STDC_VERSION__ и есть?

Miroslav Belov
А как это выяснить? Сделал gcc -dM -E. Вот что выш...

Ну вообще, достаточно посмотреть версию компилятора и поддерживает ли она нужный стандарт. А так, если ты при компиляции пишешь g++ -std=c++11 file.cpp, то пример выше работать должен

d7d1cd
У него Си

Он пытается лямбды запустить, значит С++

Miroslav-Belov Автор вопроса
Liber Azerate
Ну вообще, достаточно посмотреть версию компилятор...

Наверное дело было в том, что скармливал это Си. Запустил g++ ругается на error: cannot convert '<lambda(int, int)>' to 'int (**)(int, int)' in initialization

Miroslav Belov
Наверное дело было в том, что скармливал это Си. З...

Где ты двойной указатель сделать умудрился... Покажи

Ну вот типы то как раз тут не очень совпадают. Лямбда имеет, вообще говоря, неспецифицированный тип По идее компилятор должен скастить её к указателю на функцию, но тот же msvc так вроде не может Можно явно попробовать сказать: +[] (...) { ... } Но это из разряда эзотерики

Miroslav-Belov Автор вопроса
Liber Azerate
Он пытается лямбды запустить, значит С++

Я погугли немного. Вроде они и в Си есть, нет?

Miroslav-Belov Автор вопроса
Liber Azerate
Где ты двойной указатель сделать умудрился... Пока...

Да, умудрился. Вижу теперь) typedef int (*addIntFunction) (const int a, const int b); addIntFunction* f = [](const int a, const int b) -> int { return a + b; }

Miroslav-Belov Автор вопроса

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
80
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
Вопрос вроде правильно, но что надо сделать, чтоб текст был виден нормально ? ghci> TE.decodeUtf8 $ TE.encodeUtf8 "test - проба" "test - \1087\1088\1086\1073\1072"
Fedor
7
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
@HemulGM Параметры у AddStream поменялись? Несостыковка какая-то
Катерина Свиридова
12
Карта сайта