Как перегрузить функции, определенные с помощью лямбда-синтаксиса?C++

Программы на C++. Форум разработчиков
Anonymous
Как перегрузить функции, определенные с помощью лямбда-синтаксиса?

Сообщение Anonymous »

Мне нужна перегрузка лямбды для конкретных концепций (требований). Он отлично работает с синтаксисом шаблона, но, конечно, «лямбда-это не функция» и не может быть перегружена.
Вопрос в том, что если я останусь с синтаксисом лямбда-функции, что могу ли я использовать одно и то же имя для разных концепций (требований), как показано ниже?

Код: Выделить всё

#include 
#include 

template 
void fn_template(Rng& data) {
};

template 
void fn_template(Rng& data) {
};

constexpr auto lambda = [](Rng & data) {
};

// Redefinition error, of course
constexpr auto lambda = [](Rng & data) {
};

int main()
{
std::vector v = { 0.0f, 1.0f, 0.0f, 2.0f };

auto no_zeros = v | std::views::filter([](const auto& lhs) { return lhs != 0.0f; });

// Works just fine
fn_template(v);
fn_template(no_zeros);

// Can't achieve
lambda(v);
lambda(no_zeros);
}
Демо


Подробнее здесь: https://stackoverflow.com/questions/793 ... bda-syntax

Вернуться в «C++»