summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C')
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C21
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
new file mode 100644
index 000000000..1a12eab31
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
@@ -0,0 +1,21 @@
+// { dg-do run }
+// { dg-options "-std=c++0x" }
+
+//#include <iostream>
+#include <functional>
+#include <cassert>
+
+int main() {
+
+ std::function<int(int)> fib = [&fib] (int n) -> int {
+ //std::cerr << "fib(" << n << ")\n";
+ if (n <= 2) return 1;
+ else return fib(n-1) + fib(n-2);
+ };
+
+ assert(fib(5) == 5);
+ assert(fib(10) == 55);
+
+ return 0;
+}
+