swig/Examples/test-suite/cpp0x_lambda_functions.i
Matevz Jekovec ba2c8cff40 Added syntax for lambda expressions and closures introduced in C++0x.
Added testcase cpp0x_lambda_functions.i.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2009-matevz@11491 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2009-08-03 15:03:41 +00:00

34 lines
926 B
OpenEdge ABL

/* This testcase checks whether Swig correctly parses the lambda expressions
and closure syntax introduced in C++0x.
Swig supports only lambda syntax and doesn't produce any wrapper code for
this.
*/
%module cpp0x_lambda_functions
%inline %{
struct A {
/* Defined lambda function with return value. */
auto lambda1 = [](int x, int y) -> int { return x+y; };
/* Defined lambda function without return value.
Return value is calculated by compiler, if the function contains a
single statement "return expr;". */
auto lambda2 = [](int x, int y) { return x+y; };
};
int runLambda1() {
A myA;
return myA.lambda1(5,6);
}
int runLambda2() {
A myA;
return myA.lambda2(5,6);
}
/* Inline defined lambda function. */
int runLambda3() {
auto myLambda = [](int x, int y) { return x+y; };
return myLambda(5,6);
}
%}