Expressões lambda constexpr em C++
Visual Studio 2017 versão 15.3 e posterior (disponível no modo /std:c++17
e posterior): uma expressão lambda pode ser declarada como constexpr
ou usada em uma expressão de constante quando a inicialização de cada membro de dados que ela captura ou introduz é permitida dentro de uma expressão de constante.
int y = 32;
auto answer = [y]() constexpr
{
int x = 10;
return y + x;
};
constexpr int Increment(int n)
{
return [n] { return n + 1; }();
}
Uma lambda será implicitamente constexpr
se o seu resultado atender aos requisitos de uma função constexpr
:
auto answer = [](int n)
{
return 32 + n;
};
constexpr int response = answer(10);
Se uma lambda for implicitamente ou explicitamente constexpr
e você convertê-la em um ponteiro de função, a função resultante também será constexpr
:
auto Increment = [](int n)
{
return n + 1;
};
constexpr int(*inc)(int) = Increment;
Confira também
Referência da linguagem C++
Objetos de função na Biblioteca Padrão C++
Chamada de função
for_each
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de