Проблемы с компиляцией простой программы на C ++ 0x с лямбдами - PullRequest
2 голосов
/ 06 июля 2011

Я пытаюсь запустить простой лямбда-пример.

// lambda.cpp
#include <functional>
//#include <tr1/functional> 

int main()
{
   // Assign the same lambda expression to a function object.
   function<int (int, int)> f2 = [] (int x, int y) { return x + y; };
   //function<int (int, int)> f2 = [] (int x, int y) { return x + y; };
}

Я собираю это так:

$ g++ -std=c++0x -fpermissive lamdas.cpp
lambdas.cpp: In function ‘int main()’:    
lambdas.cpp:10: error: expected primary-expression before ‘=’ token
lambdas.cpp:10: error: expected primary-expression before ‘[’ token
lambdas.cpp:10: error: expected primary-expression before ‘]’ token
lambdas.cpp:10: error: expected primary-expression before ‘int’
lambdas.cpp:10: error: expected primary-expression before ‘int’
lambdas.cpp:10: error: expected ‘;’ before ‘{’ token

Как мне заставить его скомпилироваться без ошибок?

Ответы [ 3 ]

5 голосов
/ 06 июля 2011

Вы имели в виду std::function?

Стандартные функции библиотеки находятся в пространстве имен std.

Также интересно, что ваша копия / вставка явно фальшивая; Вы написали "lamdas.cpp", а затем скомпилировали "lambdas.cpp"!

2 голосов
/ 06 июля 2011
std::function<int (int, int)> f2 = [] (int x, int y) { return x + y; };

или, возможно, лучше

auto f2 = [] (int x, int y) { return x + y; };
0 голосов
/ 06 июля 2011

Мне кажется, ты забыл -std = c ++ 0x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...