Вы не опубликовали сообщение об ошибке, поэтому, глядя в мой хрустальный шар, я могу только заключить, что вы страдаете этими проблемами:
Отсутствует # включает
Вам нужно наверху
#include <string>
#include <functional>
Отсутствует квалификация имени
Вам нужно либо добавить
using namespace std;
или
using std::string; using std::function;
или
std :: function ...
std :: string ...
Отсутствует функция main()
int main() {}
Работает с g ++
foo@bar: $ cat nested-lambda.cc
#include <string>
#include <functional>
class C
{
public:
void M(std::string t) {}
void M(std::function<std::string()> func) {}
};
void TestMethod(std::function<void()> func) {}
void TestMethod2()
{
TestMethod([] () {
C c;
c.M([] () -> std::string { // compiler error C2668
return ("txt");
});
});
}
int main() {
}
foo@bar: $ g++ -std=c++0x nested-lambda.cc
Работает нормально.