Skip to content

Instantly share code, notes, and snippets.

@oboff
Forked from pmttavara/defer.hpp
Created February 18, 2024 06:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oboff/34415b28dabb07daf57553b7d6cd13d9 to your computer and use it in GitHub Desktop.
Save oboff/34415b28dabb07daf57553b7d6cd13d9 to your computer and use it in GitHub Desktop.
The definitive defer implementation for C++. Syntax: defer { statements; };
#ifndef defer
struct defer_dummy {};
template <class F> struct deferrer { F f; ~deferrer() { f(); } };
template <class F> deferrer<F> operator*(defer_dummy, F f) { return {f}; }
#define DEFER_(LINE) zz_defer##LINE
#define DEFER(LINE) DEFER_(LINE)
#define defer auto DEFER(__LINE__) = defer_dummy{} *[&]()
#endif // defer
@oboff
Copy link
Author

oboff commented Feb 18, 2024

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment