kali installed instalar for compile c++ lambda c++14 compiler-warnings clang++

c++ - installed - ¿Por qué recibo una advertencia de captura lambda no utilizada?



llvm 3.7 0 (1)

Estoy pasando un lambda con un contador de bucle capturado por init como este:

#include <iostream> auto sq(int c, int x) { return c * x * x; } struct S { template<class Fun> void for_each(Fun fun) const { for (auto i = 1; i < 4; ++i) { fun(i); } } }; int main() { S s; auto sum = 0; s.for_each([&, i = 2](auto c) mutable { sum += sq(c, i++); }); std::cout << sum; // 70 = 1 * 4 + 2 * 9 + 3 * 16 }

Para g ++ hasta 7.0 SVN y para clang ++ hasta 3.9.1, todo esto se compila sin advertencias. Sin embargo, para clang ++ 5.0 SVN, obtengo

prog.cc:18:20: warning: lambda capture ''i'' is not required to be captured for this use [-Wunused-lambda-capture] s.for_each([&, i = 2](auto c) mutable {

A pesar de que todavía imprime la respuesta correcta. Ejemplo vivo

Pregunta : ¿por qué recibo esta nueva Wunused-lambda-capture de clang?


Su código es válido.

La advertencia de Clang es una tontería.

Reportar esto como un error.