Будет ли стандартизирована идиоматическая защита/выход из области видимости?

Запуск лямбды при выходе из области видимости кажется такой простой вещью, что я ожидаю, что она будет стандартизирована. Такие вещи, как unique_ptr, лучше, когда они применимы, но я обнаружил, что существует бесконечный запас «одноразовых» деструкторов, особенно при использовании библиотек в стиле C. Кто-нибудь знает, грядет ли это?


person VoidStar    schedule 22.05.2015    source источник
comment
В каких случаях вы используете лямбда-выражения при выходе из области видимости?   -  person Borgleader    schedule 22.05.2015
comment
Хорошим примером является ожидание завершения рабочих элементов пула потоков перед закрытием пула потоков (даже когда возникает исключение, вам все равно придется ждать, иначе это приведет к сбою рабочих процессов). Всегда можно создать полную оболочку C++ для каждой вещи, которую вы делаете, но это так много лишнего кода в тех случаях, когда вы используете ее один раз.   -  person VoidStar    schedule 22.05.2015
comment
Написать предложение? Мне нравится Реализация Стефануса Дю Туа (хотя я понятия не имею, почему он назвал ее Auto)   -  person Barry    schedule 22.05.2015
comment
@Barry: На самом деле это реализация Артура О'Дуайера — см. goo.gl/0t8bXR   -  person sdt    schedule 03.08.2015
comment
@sdt Ой. Ошибка понимания прочитанного с моей стороны. Хотя комментарий остался про Auto :)   -  person Barry    schedule 03.08.2015


Ответы (2)


n4189 — это предложение добавить make_scope_exit оболочки, и другие подобные обработчики ресурсов для языка. Он основан на относительно известном выступлении scope_guard.

Самый последний «текущий статус бумаги» от LWG относится к 2013 году, до указанной выше даты.

Содержимое C++1z (надеюсь, C++17) еще предстоит определить.

статус C++1z для clang не упоминает об этом. C++1z TS для clang не упоминает об этом.

Сама статья содержит пример реализации. Я не знаю, на каких лицензионных условиях он находится.

person Yakk - Adam Nevraumont    schedule 22.05.2015
comment
Оно похоже прошло проверку LEWG, но, похоже, перед его можно принять. Формулировка N4189 довольно плохая. - person T.C.; 23.05.2015

Похоже, что текущая версия выходного документа, P0052, войдет в Основы Библиотеки версии 3 для возможного принятия в Post-C++17. стандарт.

Короче говоря, для С++ 17 этого не произойдет. Извини.

person Nicol Bolas    schedule 09.07.2016
comment
Заключительный комментарий, в котором говорится о предложении перенести его на IS. Не могу сказать, произойдет ли это. - person pepper_chico; 07.01.2017
comment
@pepper_chico Что такое ИС? - person Jens; 10.05.2017
comment
@Jens: Международный стандарт. Не получилось, кстати. - person Nicol Bolas; 10.05.2017