Russian Qt Forum

Qt => Вопросы новичков => Тема начата: fisenkdima от Апрель 05, 2013, 11:23



Название: Какой тип у лямбды?
Отправлено: fisenkdima от Апрель 05, 2013, 11:23
Не могу сообразить, почему QtCreator выдаёт ошибку на нижеприведённый код: 'function' was not declared in this scope,
хотя и подсвечивает это слово фиолетовым (т.е. понимает, что это). Мне нужно передавать функтор неким сложным образом между объектами,
а я не знаю, какой проставлять тип принимаемого значения, и что нужно подключить инклюдом (если требуется что-то подключать).
Подскажите, пожалуйста, в чем мой косяк и как его можно исправить.
Код:
#include <QCoreApplication>

#include <functional>

int main( int argc, char *argv[] )
{
    QCoreApplication a( argc, argv );
   
    function< int ( int )> func1 = []( int i )->int{ return i; };

    function< int ( int )> func2 = func1;
    func2( 2 );
    return a.exec();
}


Название: Re: Какой тип у лямбды?
Отправлено: m_ax от Апрель 05, 2013, 11:36
using namespace std


Название: Re: Какой тип у лямбды?
Отправлено: Пантер от Апрель 05, 2013, 11:38
using namespace std
Нееее. using std::function;


Название: Re: Какой тип у лямбды?
Отправлено: fisenkdima от Апрель 05, 2013, 11:56
Мимо. Это я уже пробовал.
'std::function' has not been declared


Название: Re: Какой тип у лямбды?
Отправлено: RedDog от Апрель 05, 2013, 11:58
А Ц11 подключен директивами?


Название: Re: Какой тип у лямбды?
Отправлено: fisenkdima от Апрель 05, 2013, 12:01
Попадание. Блин, второй раз уже на одни и те же грабли наступаю, пора бы запомнить >.<
Спасибо за помощь.


Название: Re: Какой тип у лямбды?
Отправлено: Igors от Апрель 05, 2013, 13:41
Код:
    function< int ( int )> func1 = []( int i )->int{ return i; };
Если нетрудно, растолкуйте что все это значит (особенно []  ???)
Спасибо


Название: Re: Какой тип у лямбды?
Отправлено: Hellraiser от Апрель 05, 2013, 14:58
Это лямбда-функция (http://ru.wikipedia.org/wiki/C%2B%2B11#.D0.9B.D1.8F.D0.BC.D0.B1.D0.B4.D0.B0-.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D0.B8_.D0.B8_.D0.B2.D1.8B.D1.80.D0.B0.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F) из стандарта C++11. Вот (http://habrahabr.ru/post/66021/) еще статья на эту тему.