• [^] # Re: simple ?

    Posté par (site web personnel) . En réponse au journal Rust en version 0.12. Évalué à 2.

    Avec CLang c'est un peu plus explicite :

    main.cpp:4:20: error: 'auto' not allowed in lambda parameter
     auto square = [](auto x) { return x * x; };
     ^~~~
    main.cpp:5:19: error: 'auto' not allowed in lambda parameter
     auto twice = [](auto x, auto f) { return f(x) + f(x); };
     ^~~~
    main.cpp:5:27: error: 'auto' not allowed in lambda parameter
     auto twice = [](auto x, auto f) { return f(x) + f(x); };
     ^~~~
    main.cpp:7:16: error: no matching function for call to object of type '<lambda at main.cpp:5:16>'
     std::cout << twice(5,square) << std::endl;
     ^~~~~
    main.cpp:5:16: note: candidate template ignored: couldn't infer template argument '$auto-0-0'
     auto twice = [](auto x, auto f) { return f(x) + f(x); };
     ^
    main.cpp:8:16: error: no matching function for call to object of type '<lambda at main.cpp:5:16>'
     std::cout << twice(5.1,square) << std::endl;
     ^~~~~
    main.cpp:5:16: note: candidate template ignored: couldn't infer template argument '$auto-0-0'
     auto twice = [](auto x, auto f) { return f(x) + f(x); };