Ir ao conteúdo
  • Cadastre-se

Posts recomendados

Postado

Bom dia pessoal.

tenho uma dúvida sobre a função lambda.

 

 

auto soma=[](int a, int b)->{ return a+b};

 

A declaração do nome da função sempre deve ser "auto" ou pode ter outro qualificador?

 

Obrigado

Postado
4 horas atrás, Nera disse:

Eu só gostaria de entender

 

Usando auto para o tipo e eventualmente para os parâmetros você pode usar a mesma função para vários tipos sem quer que escrever templates, só escrevendo a função. Essa é a razão por trás de auto nesses casos

 

Talvez esse exemplo explique algo mais para você. Ele mostra
 

1: exemplo(2, 3.4) = 5.4
2: exemplo("Clube"," do Hardware) = Clube do Hardware
3: exemplo('a','b') = 195
4: exemplo(2, 3) = 5

 

A função exemplo() roda para qualquer tipo que possa ser somado. Isso em C++20 é um concept

Se você criar qualquer classe que defina soma a função lambda vai funcionar sem qualquer mudança. E você pode definir soma para qualquer classe que escreva. 

Imagine uma classe conjunto por exemplo e se você escrever a união entre dois conjuntos como sendo a soma deles. a função lambda vai rodar com seu conjunto

 

Eis o exemplo
 

#include <iostream>
using namespace std;
int main()
{

    auto exemplo = [](auto a, auto b) -> decltype(a+b)
        { return ( a + b ); };
    // 1
    std::cout << "1: exemplo(2, 3.4) = " << exemplo( 2, 3.4 ) << std::endl;
    // 2
    const string a{ "Clube" };
    const string b{ " do Hardware" };
    std::cout << "2: exemplo(\"" << a << "\",\"" << b << "\) = "
      << exemplo(a,b) << std::endl;
    // 3
    std::cout << "3: exemplo('a','b') = " << exemplo('a', 'b') << std::endl;
    // 4
    std::cout << "4: exemplo(2, 3) = " << exemplo(2, 3) << std::endl;
}

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...