Как перегрузить функции, определенные с помощью лямбда-синтаксиса?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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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