Однажды велась долгая дискуссия о том, следует ли считать типы замыканий структурными типами или нет (по сути, определяя, будут ли они подходить как NTTP). Подробный пост на эту тему, сделанный пользователем dfrib, можно найти здесь.
Первоначальное беспокойство по этому поводу, похоже, выразил Чжихао Юань еще в марте 2022 года. В конечном итоге это стало дефектом. отчет CWG 2542, который был принят на заседании рабочей группы в июне 2023 года. Предложенная резолюция этого отчета о дефектах была одобрена, и в нем очень четко указано, что типы затворов не являются структурными типами.
Это изменение было отражено во многих версиях рабочего проекта C++, по крайней мере, вплоть до N4971. Интересующий отрывок указан в разделе [expr.prim.lambda.closure]/3. Это также то, что люди найдут, просматривая запись cppreference о лямбда-выражениях, которая ссылается на отчет о дефектах CWG 2542 внизу страницы.
Однако в более поздней версии рабочего проекта C++ N4981, отрывок [expr.prim.lambda.closure]/3 теперь гласит:
Тип замыкания не является агрегатным типом (9.4.2); это структурный
тип (13.2) тогда и только тогда, когда лямбда не имеет лямбда-захвата.
Что, похоже, отменяет утвержденное разрешение отчета о дефектах CWG 2542. Следует ли теперь считать этот отчет о дефектах устаревшим? И на каком совещании/решении/документе типы закрытия теперь стали структурными типами?
Подробнее здесь: https://stackoverflow.com/questions/784 ... ural-types
Когда типы замыканий наконец стали структурными типами? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение