aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C')
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C20
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
new file mode 100644
index 0000000..cbaeb16
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
@@ -0,0 +1,20 @@
+// { dg-do run { target c++11 } }
+
+//#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;
+}
+