Форум программистов, компьютерный форум, киберфорум
Наши страницы

Лямбда не допускает auto - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Скомпилится ли код, написанный, с g++ 4.6.3 на компиляторе версии 4.7.1? http://www.cyberforum.ru/cpp/thread888772.html
Если я пишу код с 4.6.3, он может не скомпилиться на 4.7 ? Или там есть обратная поддержка? Отмечу, что опции компиляции будут g++ -std=c++11 -Wall -Werror -pedantic-errors Добавлено через 6...
C++ treeView Visual studio помогите с записью в файл ! есть такие классы и методы template<typename T,typename Tl> class Buss { public: T buss_number; // номер автобуса T path_number; // номер маршрута Tl... http://www.cyberforum.ru/cpp/thread885200.html
C++ В чем писать?
Здравствуйте! Скажите какая есть альтернатива Microsoft Visual Studio? Ато Visual Studio сломалась, а как ее починить до меня не дошло(Зато понял причину поломки:))...
C++ Составить словарь словоформ текста и построить семантическую сеть
Помогите пожалуйста!!!Решить задачу: Имеется текст на английском языке, составленный из предложений вида: подлежащее сказуемое дополнение . Составить словарь словоформ этого текста, используя...
C++ Плагин под TrueCrypt http://www.cyberforum.ru/cpp/thread880833.html
Добрый день! Такая ситуация: есть программа TrueCrypt, которая работает со скрытыми шифрованными областями памяти на жестком диске, и есть различные программы, в том числе с открытыми исходниками,...
C++ Обращение к double** из метода dll вызывает ошибку памяти Есть класс который создает двухмерный массив. Этот класс экпортирую в dll и использую полученную библиотеку в программе С#. Все методы(которые здесь не упомяноты) работают, кроме одного... подробнее

Показать сообщение отдельно
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045

Лямбда не допускает auto - C++

04.06.2013, 11:56. Просмотров 6064. Ответов 7
Метки (Все метки)

Всем привет!

Имеем код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
 
int main() 
{
    std::vector<int> v(10);
    std::iota( v.begin(), v.end(), 1 );
    std::for_each( v.begin(), v.end(), [](long long i){ std::cout << i << " ";}); // ok
    //std::for_each( v.begin(), v.end(), [](int i){ std::cout << i << " ";}); // ok
    //std::for_each( v.begin(), v.end(), [](double i){ std::cout << i << " ";}); // ok
    //std::for_each( v.begin(), v.end(), [](auto i){ std::cout << i << " ";}); // error 
 
    return 0;
}
Почему в данном случае в параметрах лямбда-функции не допускается использование auto?
Ведь компилятор имеет возможность вывести тип элементов контейнера.
И, более того, код с диапазонным for работает:

C++
1
2
3
4
for( auto e : v )
{
    std::cout << e << " ";
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru