Re[3]: Захват лямбды в лямбде
От: σ  
Дата: 18.06.22 21:14
Оценка: 13 (1)
W>>Все три компилятора правы: код некорректен

_NN>Неправильный у вас пример

_NN>Попробуйте вот так:
_NN>
auto a = [a](){};

int main() {}

_NN>https://godbolt.org/z/Yc9vdzjna

The identifier in a simple-capture is looked up using the usual rules for unqualified name lookup; each such lookup shall find a local entity.
A local entity is a variable with automatic storage duration, a structured binding whose corresponding variable is such an entity, or the *this object.

https://godbolt.org/z/afhPb9q6s
Захват лямбды в лямбде
От: _NN_ www.nemerleweb.com
Дата: 18.06.22 20:39
Оценка:
GCC компилирует такой код, а clang и MSVC нет.
Кто здесь прав ?

auto a = [a](){};
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Захват лямбды в лямбде
От: watchmaker  
Дата: 18.06.22 21:06
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>GCC компилирует такой код, а clang и MSVC нет.


Никто не компилирует
https://godbolt.org/z/jYzv4rh5W

_NN>Кто здесь прав ?


Все три компилятора правы: код некорректен
Re: Захват лямбды в лямбде
От: σ  
Дата: 18.06.22 21:06
Оценка:
If the name of an entity with an undeduced placeholder type appears in an expression, the program is ill-formed.
Re[2]: Захват лямбды в лямбде
От: _NN_ www.nemerleweb.com
Дата: 18.06.22 21:07
Оценка:
Здравствуйте, watchmaker, Вы писали:


W>Все три компилятора правы: код некорректен


Неправильный у вас пример
Попробуйте вот так:

auto a = [a](){};

int main() {}



https://godbolt.org/z/Yc9vdzjna
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Захват лямбды в лямбде
От: T4r4sB Россия  
Дата: 18.06.22 21:10
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>GCC компилирует такой код, а clang и MSVC нет.

_NN>Кто здесь прав ?

_NN>
_NN>auto a = [a](){};
_NN>


http://rsdn.org/forum/cpp/8185503.flat
Автор: T4r4sB
Дата: 01.02.22
Re: Захват лямбды в лямбде
От: σ  
Дата: 20.06.22 16:13
Оценка:
_NN>GCC компилирует такой код

Больше без проверок с флагом -pedantic-errors тем не создавай.
Re: Захват лямбды в лямбде
От: Muxa  
Дата: 20.06.22 21:01
Оценка:
Так пойдет?

#include <functional>

int main() {
    std::function<void()> a = [&a](){};
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.