Описание тега scopeguard
2
ответа
Динамически создаваемые ограждения
Я прочитал статью об ограничителях видимости ( Generic: Измените способ написания кода, исключающего безопасность - навсегда) в DDJ, и я понимаю их общее использование. Тем не менее, общее использование состоит в том, чтобы создать конкретную защиту…
14 окт '09 в 10:40
2
ответа
Как избежать предупреждения при использовании прицела?
Я использую защиту от глупости, она работает, но выдает предупреждение о том, что переменная не используется: warning: unused variable ‘g’ [-Wunused-variable] Код: folly::ScopeGuard g = folly::makeGuard([&] {close(sock);}); Как избежать такого п…
23 фев '16 в 20:02
1
ответ
Постоянная ссылка для временного продления жизни
У меня есть вопрос о соответствии стандарту C++ или его отсутствии. В моем проекте я использую некоторый простой класс Guard, который использует трюк с константой. Я использую Visual Studio 2005 и есть две конфигурации - одна для обычной сборки рели…
03 ноя '10 в 11:19
7
ответов
Использует ли ScopeGuard действительно лучший код?
Я наткнулся на эту статью, написанную Андреем Александреску и Петру Марджиняном много лет назад, которая представляет и обсуждает служебный класс ScopeGuard для написания кода, исключающего исключение. Я хотел бы знать, действительно ли кодирование …
07 сен '08 в 18:20
3
ответа
Scopeguard и параметры по ссылке
В этой статье в разделе " Поддержка параметров по ссылкам" они указывают на проблему и предоставляют решение для ссылок. Мой вопрос: почему они просто не объявляют параметры как ссылки в первую очередь? Т.е. вместо: const Parm parm_; делать: Parm &a…
08 май '11 в 14:05
2
ответа
C++: еще один простой охранник
Давайте спросим вас об этом простом ограждении: template <class T> struct finop_t { T& t; ~finop_t() { t(); } }; #define FINALLY__(l, cl) \ auto FIN ## l ## clo = cl; \ finop_t<decltype(FIN ## l ## clo)> FIN ## l ## fin { FIN ## l ##…
10 авг '15 в 17:17
0
ответов
Декларативное программирование с использованием ScopeGuard для SCOPE_FAIL
Я просматриваю слайды выступления Андрея Александреску на https://github.com/CppCon/CppCon2015/blob/master/Presentations/Declarative%20Control%20Flow/Declarative%20Control%20Flow%20-%20Andrei%20Alexandrescu%20-%20CppCon%202015.pdf Я пробую пример со…
17 дек '18 в 18:22
2
ответа
Обертка RAII для пар функций и специализации шаблонов
Я написал оболочку RAII для пар функций C, которые инициализируют и освобождают ресурсы, и в большинстве случаев она мне подходит. #include <GL/glfw.h> #include <string> #include <functional> #include <stdexcept> template <…
19 янв '13 в 21:16
1
ответ
Использование std::unique_ptr и lambdas для улучшения состояния объекта
При улучшении состояния объекта, использование std::swap хорошо работает для простых объектов и обмена указателями. Для других на месте действий, Boost.ScopeExit работает довольно хорошо, но это не очень элегантно, если вы хотите разделить обработчи…
03 ноя '13 в 06:55
1
ответ
C++: почему работает этот простой Scope Guard?
Пока что каждый, кто рассматривал область видимости, имеет логическую переменную guard. Например, посмотрите это обсуждение: Самый простой и изящный C++11 ScopeGuard Но работает простой охранник (gcc 4.9, clang 3.6.0): template <class C> struc…
10 авг '15 в 14:49
3
ответа
Есть ли способ продлить время жизни временного объекта в C++?
Я написал защиту области, которая сбрасывает значение при выходе из области: template <class T> struct ResetGuard { T old_value; T& obj_to_reset; ResetGuard(T& obj_to_reset, const T& new_value) : old_value(obj_to_reset), obj_to_res…
01 июл '18 в 06:29
1
ответ
Почему Александреску не может использовать std::uncaught_exception() для реализации SCOPE_FAIL в ScopeGuard11?
Многие люди, без сомнения, знакомы с шаблоном Mr. Alexandrescus ScopeGuard (теперь он является частью Loki) и новой версией ScopeGuard11, представленной здесь: http://channel9.msdn.com/Shows/Going+Deep/C-and-Beyond-2012-Andrei-Alexandrescu-Systemati…
17 фев '13 в 23:23
1
ответ
Scope Guard Statement в C#
Идиома Resource Acquisition Is Initialization (RAII) и оператор try-finally составляют основу традиционных подходов к написанию безопасного программирования исключений. Мой вопрос: есть ли что-то вроде ScopeGuardStatement на C#?
11 дек '12 в 23:33
2
ответа
Будет ли стандартизация идиом охранника / выхода из области видимости?
Запуск лямбды на выходе из области видимости кажется такой простой вещью, я бы ожидал, что она будет стандартизирована. Вещи как unique_ptr лучше, когда они применяются, но я считаю, что существует бесконечный запас "одноразовых" деструкторов, особе…
22 май '15 в 20:20
2
ответа
ScopeGuard уволить
Мой код требует ограждения области видимости, однако я должен вручную Dismiss() все прицелы на выходе из функции нормально? т.е. void Deleter(MyClass* obj) { delete obj; } MyClass* Func() { MyClass* obj = new MyClass(); ScopeGuard sg1 = MakeObjGuard…
11 мар '11 в 05:56
1
ответ
Использование ScopeGuard с несколькими распределениями ресурсов и точками выхода в функции
У меня есть несколько ресурсов, выделенных в функции, поэтому довольно много указателей, из которых я должен вернуть один указатель (скажем, ret_ptr) и освободить другие (все othr_ptrs) перед выходом из функции. У меня есть несколько точек выхода в …
01 июл '14 в 12:12
14
ответов
Самый простой и удобный C++11 ScopeGuard
Я пытаюсь написать простой ScopeGuard, основанный на концепциях Александреску, но с идиомами C++11. namespace RAII { template< typename Lambda > class ScopeGuard { mutable bool committed; Lambda rollbackLambda; public: ScopeGuard( const Lambda…
22 апр '12 в 17:35
1
ответ
Продление жизни временного по константной ссылке
C++ Я пытаюсь понять, как ссылки на const продлевают жизнь временных пользователей. Я запускаю код из фрагмента в одном из ответов на вопросы. Каковы различия между переменной указателя и ссылочной переменной в C++? и получил противоречивые результа…
10 окт '13 в 22:00
0
ответов
Разница между ScopeGuard11 и Boost.ScopeExit - просто обратная совместимость?
Недавно я смотрел выступление Андрея Александреску в "C++ и после 2012 года" ( Обработка систематических ошибок с C++), в котором он обсуждает свою конструкцию ScopeGuard11, и в частности SCOPE_EXIT (вторая часть доклада или просто прочитайте код зд…
20 фев '15 в 19:40
2
ответа
Кто копирует возвращаемое значение функции?
Является ли вызывающий или вызываемый объект копирующим или перемещающим возвращаемое значение функции? Например, если я хочу реализовать функцию pop() очереди, например template <typename T> class queue { std::deque<T> d; public: // ...…
02 июл '13 в 08:53