Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
maxm
60 / 32 / 8
Регистрация: 17.07.2014
Сообщений: 430
#1

Как вернуть значение лямбды? - C++

29.06.2016, 13:29. Просмотров 173. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
int someFunc()
{
    return []() -> int {return 1;}; // не работает. Как возвращать такие штуки? 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
meJevin
154 / 146 / 57
Регистрация: 18.11.2015
Сообщений: 629
Завершенные тесты: 1
29.06.2016, 13:35     Как вернуть значение лямбды? #2
Все возвращается.

C++
1
2
3
4
5
6
7
8
9
int main()
{
 
    auto func = []() -> int { return 1; };
 
    std::cout << func() << std::endl; // 1
 
    _getch();
}
Добавлено через 1 минуту
Ну и по аналогии
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int someFunc()
{
    auto func = []() -> int { return 1; };
    return func(); 
}
 
int main()
{
 
    std::cout << someFunc() << std::endl; // 1
 
    _getch();
}
maxm
60 / 32 / 8
Регистрация: 17.07.2014
Сообщений: 430
29.06.2016, 13:36  [ТС]     Как вернуть значение лямбды? #3
Спасибо. А без auto не выйдет?
avgoor
879 / 514 / 111
Регистрация: 05.12.2015
Сообщений: 1,455
29.06.2016, 13:41     Как вернуть значение лямбды? #4
maxm, return []() -> int {return 1;}(); // Вызывать то ее кто будет?
meJevin
154 / 146 / 57
Регистрация: 18.11.2015
Сообщений: 629
Завершенные тесты: 1
29.06.2016, 13:50     Как вернуть значение лямбды? #5
avgoor, good catch. Я и не заметил, фигню какую-то начал писать.

Добавлено через 2 минуты
maxm, вам надо было вызвать её с самого начала. Вы её создали, но не вызывали. Поэтому компилятор думает, что вы хотите вернуть из функции лямбда выражение
Babysitter
80 / 107 / 35
Регистрация: 23.11.2015
Сообщений: 331
Завершенные тесты: 1
29.06.2016, 14:06     Как вернуть значение лямбды? #6
подводя итог - такой костыль должен работать.
C++
1
2
3
4
int someFunc()
{
    return ([]() -> int {return 1;})();
}
извиняюсь, не заметил, уже было
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2016, 14:30     Как вернуть значение лямбды?
Еще ссылки по теме:

C++ Как вернуть из моей функции значение реестра?
Pthread.h, как вернуть из потоковой функции значение типа double? C++
C++ Функции, как вернуть значение?
C++ Как вернуть значение из макроса?
Как создать псевдоним для лямбды? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
rikimaru2013
C++ Game Dev
2377 / 1071 / 234
Регистрация: 30.11.2013
Сообщений: 3,555
29.06.2016, 14:30     Как вернуть значение лямбды? #7
maxm, итого - вы тревожите клавиши клавиатуры попусту и возвращаете литерал. В чём смысл?
Yandex
Объявления
29.06.2016, 14:30     Как вернуть значение лямбды?
Ответ Создать тему
Опции темы

Текущее время: 14:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru