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

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

Сообщение Anonymous »

Мне нужна перегрузка лямбды для конкретных концепций (требований). Он отлично работает в синтаксисе шаблона, но, конечно, «лямбда-это не функция» и не может быть перегружена.
К сожалению, решения, представленные в вышеупомянутой статье «Перегрузка лямбда-функции», не работают. Помогите, потому что:
  • Мой вопрос касается концепций/требований, а не типов (здесь ключевое различие).
  • В общем случае у меня есть много разных концепций и хаков с помощью if constexpr std::is_same_v становится довольно хрупким; добавлена ​​одна новая концепция, и мне придется найти и обновить весь клиентский код, что невозможно.
Вопрос в том, останусь ли я с лямбда-функцией синтаксис, что я могу сделать, чтобы использовать одно и то же имя для разных концепций (требований), как показано ниже?

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

#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 ... cepts-requ
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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