Ограничение явного параметра объекта в лямбда-выражении с захватомC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Гость
 Ограничение явного параметра объекта в лямбда-выражении с захватом

Сообщение Гость »


В C++23 лямбда-выражение поддерживает явный параметр объекта (так называемый «вывод этого»). Я обнаружил странное ограничение для лямбды при захвате в [expr.prim.lambda]/p5.

Для лямбды с лямбда-захватом тип явного параметра объекта, если таковой имеется, оператора вызова функции лямбды (возможно, созданного из шаблона оператора вызова функции) должен быть следующим:
[*]тип закрытия, [*]тип класса, производный от типа замыкания, или [*]ссылка на возможно такой тип с указанием cv.
[Пример 2:

struct C { шаблон С(Т); }; void func(int i) { int x = [=](this auto&&) { return i; }(); // ХОРОШО int y = [=](this C) { return i; }(); // ошибка int z = [](this C) { return 42; }(); // ХОРОШО } -- конец примера]

Вопрос: почему такое ограничение существует только для лямбда-выражений с захватом? Есть ли проблемы с реализацией?
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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