Pergunta

Ultimamente eu fui ficando muito animado sobre o suporte para lambdas em VC2010. Eu estou lentamente começando a entender o potencial deste recurso tem na transformação C ++ em algo muito melhor.

Mas então eu percebi que esse potencial depende muito do apoio fluxo principal de lambdas em dia para bibliotecas dia como impulso e QT.
Alguém sabe se existem planos para estender essas bibliotecas com os novos recursos de C ++ 0x?

lambdas praticamente substituir a necessidade de boost :: lambda e tudo o impulso que interage com ele. QT poderia adicionar suporte para lambdas em todo o seu recipiente e talvez até mesmo como uma forma alternativa de definir SLOTs

Foi útil?

Solução

Lambdas já se encaixam muito bem em bibliotecas existentes - em qualquer lugar que a função aceita um objeto de função de um tipo de dado por um parâmetro do modelo

.

Esta é uma das grandes coisas sobre eles -. Eles são um exemplo clássico de um recurso de linguagem que codifica a prática existente em uma sintaxe bacana

Obviamente, a biblioteca de impulso lambda torna-se redundante, mas isso significa que não necessita de quaisquer novos recursos para ser adicionado a ele.

Outras dicas

Eu não vejo como o uso de lambda depende do apoio de bibliotecas. Lambdas eliminar a necessidade de criar muitas classes apenas para embrulhar pequenas diferentes algoritmos e ordenadamente se encaixam com outra língua / recursos de biblioteca (std::function vem à mente). Onde quer que você usado para passar um objeto de função ou um ponteiro de função, lambdas podem ser usados ??também.

Então, eles acrescentam principalmente uma outra alternativa para fazer uso de código e bibliotecas existentes. A única maneira que eu posso ver por bibliotecas para melhor lambda apoio é o uso mais de estilo funcional aproxima.

As possibilidades são tais bibliotecas vão esperar até que haja suporte do compilador apropriado para a relevante C ++ 0x recursos, e não se preocupar muito com ela até os compiladores tradicionais não apoiá-lo. Não segure a respiração.

Isso não é verdade, você não pode substituir boost :: lambda com C ++ 0x lambda. Consulte aqui para alguns razões (cerca de impulso bind, mas acho que a maioria dos que transfere)

Além disso, @ Daniel este pode ajudá-lo a começar a usar funções lambda / impulso de vinculação para slots. Faz minha vida incrivelmente fácil.

Além disso, @ litb de minhas fontes, lambdas não vão ser alteradas (argh)

A maioria das bibliotecas usar ponteiros de função padrão para chamadas de retorno. C ++ 0x lambdas podem ser usados ??como ponteiros de função, de modo que a maioria das bibliotecas não precisam ser modificados. Outras bibliotecas usar modelos para que eles possam tomar qualquer objeto que pode ser chamado (por exemplo std::foreach não precisam ser modificados).

A única outra C ++ 0x característica que eu posso pensar que as bibliotecas podem mudar a está usando enums fortemente tipado. Além disso, as bibliotecas podem começar a usar modelos extern para reduzir os tempos de compilação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top