Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
6 / 6 / 4
Регистрация: 26.06.2015
Сообщений: 83

Какой будет тип у переменной auto, которой присвоили лямда-функцию

01.09.2016, 13:13. Показов 1544. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Скажите пожалуйста, какой тип будет у переменной auto, которой присвоили лямбда функцию.
Например:

C++
1
2
3
4
5
6
7
8
9
10
...
auto x = 15;  //  тип "x" будет int.
 
std::list<int> l;
auto a = l.begin();    //  тип "a" будет std::list<int>::iterator;
 
auto b = [=]()  
{
std::cout<<x<<std::endl;
}
Какой тип будет у "b"?

Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.09.2016, 13:13
Ответы с готовыми решениями:

Какой тип (типы) следует указать при написании переменной,которая будет принимать заданные значения?
Какой тип (типы) следует указать при написании переменной,которая будет принимать заданные значения? `+`, -15

Авторство какой программы вы бы присвоили себе?
Интересно просто. Я бы торрент-клиента.

Enum и типы данных. Как задать тип значений явно, и какой тип будет при переполнении?
Пытаюсь сделать функцию с передачей нескольких параметров,используя битовые операции. В качестве параметров думаю использовать не...

5
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
01.09.2016, 13:19
Лучший ответ Сообщение было отмечено TheThe как решение

Решение

в стандарте не оговорено, так что зависит от реализации.
1
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
01.09.2016, 14:06
Лучший ответ Сообщение было отмечено TheThe как решение

Решение

Ради интереса можно посмотреть по ошибкам компиляции:
C++
1
2
3
4
5
6
7
8
int main()
{
    auto empty_lambda = []{};
    auto lambda = [](const std::string& s, const std::vector<int>&){return s;};
 
    empty_lambda = 12;
    lambda = 12;
}
На gcc типы определены как main()::<lambda()> и main()::<lambda(const string&, const std::vector<int>&)>
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
01.09.2016, 15:16
http://rextester.com/BWHPD91541

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//========================================================================
//========================================================================
//========================================================================
 
    /* demangle names ot types */
 
#include <typeinfo>
#include <string>
 
#if defined(__GNUC__) || defined(__MINGW32__) || defined(__MINGW__)
 
    #include <cxxabi.h>
    #include <memory>
    
    std::string demangle(const char* name) {
    
        int status = -1; 
        std::unique_ptr<char, void(*)(void*)> res {
            abi::__cxa_demangle(name, NULL, NULL, &status),
            std::free
        };
        return (status == 0) ? res.get() : name ;
    }
#else
 
    std::string demangle(const char* name) 
        { return name; }
 
#endif
 
template <class T> std::string type(const T& t) 
    { return demangle(typeid(t).name()); }
 
 
//========================================================================
//========================================================================
//========================================================================
 
 
#include <iostream>
 
int main()
{
    std::cout << "Hello, world!\n";
    
    auto x = 15;  
 
    auto b = [=](){ std::cout<<x<<std::endl; };
    
   std::cout <<  demangle(typeid(b).name())<<std::endl;
}
2
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
01.09.2016, 15:51
hoggy, что-то http://rextester.com/ даёт в трёх случаях разные результаты и в одном вообще ошибка компиляции
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
01.09.2016, 22:39
Лучший ответ Сообщение было отмечено TheThe как решение

Решение

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
что-то http://rextester.com/ даёт в трёх случаях разные результаты и в одном вообще ошибка компиляции
спасибо за годное review
поправил, теперь шланг это тоже кушает:
http://rextester.com/FHNX39700


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//========================================================================
//========================================================================
//========================================================================
 
    /* demangle names ot types */
 
#include <typeinfo>
#include <string>
 
#if defined(__GNUC__) || defined(__MINGW32__) || defined(__MINGW__)
 
    #include <cxxabi.h>
    #include <cstdlib>
    #include <memory>
    
    std::string demangle(const char* name) {
    
        int status = -1; 
        std::unique_ptr<char, void(*)(void*)> res {
            abi::__cxa_demangle(name, NULL, NULL, &status),
            std::free
        };
        return (status == 0) ? res.get() : name ;
    }
#else
 
    std::string demangle(const char* name) 
        { return name; }
 
#endif
 
template <class T> std::string type(const T& t) 
    { return demangle(typeid(t).name()); }
 
 
//========================================================================
//========================================================================
//========================================================================
 
 
#include <iostream>
 
int main()
{
    std::cout << "Hello, world!\n";
    
    auto x = 15;  
 
    auto b = [=](){ std::cout<<x<<std::endl; };
    
   std::cout <<  demangle(typeid(b).name())<<std::endl;
}
а так вообще, typeid(t).name() - US.
то есть, оно не обязано давать одинаковые результаты.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.09.2016, 22:39
Помогаю со студенческими работами здесь

Какой тип переменной использовать
Всем добрый вечер!!Народ выручайте,мне сегодня преподаватель задал вопрос,но ответа я незнаю. Вопрос: Почему при расчёте...

подскажите какой тип у переменной?
какой тип у &quot;S&quot; ? for i:=1 to n do begin write('введите марку авто: '); readln(a.marka); write('введите цену: '); ...

Какой тип переменной указать
Здравствуйте. void findButton(/*Какой тип переменной указать для передачи в функцию?*/ gridname) if...

Какой тип возвращаемой переменной?
Всем привет! Подскажите правильный тип возвращаемой переменной. Я вот так думаю, но возвращает ошибку &quot;root cannot be resolved to a...

Откомпилировать код с переменной, тип которой описан позже (Delphi 7)
подскажите метод, который позволяет компилировать код с переменной, тип которой описан позже


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru