p6.cpp revision ef7d78bd5be466c369b04af742ed8268244d4fe7
143dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify 243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis 343dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidisvoid test_conversion() { 443dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis int (*fp1)(int) = [](int x) { return x + 1; }; 543dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis void (*fp2)(int) = [](int x) { }; 643dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis 743dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis const auto lambda = [](int x) { }; 843dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis void (*fp3)(int) = lambda; 943dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis 1043dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis volatile const auto lambda2 = [](int x) { }; // expected-note{{but method is not marked volatile}} 1143dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis void (*fp4)(int) = lambda2; // expected-error{{no viable conversion}} 1243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis} 1343dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis 1443dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidisvoid test_no_conversion() { 1543dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis int (*fp1)(int) = [=](int x) { return x + 1; }; // expected-error{{no viable conversion}} 16769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis void (*fp2)(int) = [&](int x) { }; // expected-error{{no viable conversion}} 17769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis} 189fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis 1943dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidisvoid test_wonky() { 2043dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis const auto l = [](int x) mutable -> int { return + 1; }; 2143dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis l(17); // okay: uses conversion function 2243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis} 23769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis