Описание тега 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 &lt…
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#?
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++? и получил противоречивые результа…
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