프로그래밍/C,C++
C++(mordern) golang-style defer 만들기
GONII
2024. 11. 29. 15:17
#ifndef __DEFER__
template <class F>
struct defer_caller {
F f;
~defer_caller() { f(); }
};
struct defer_dummy {};
template <class F>
defer_caller<F> operator*(defer_dummy, F f) {
return { f };
}
#define defer_varname_(NUM) zz_defer_##NUM
#define defer_varname(NUM) defer_varname_(NUM)
#define defer auto defer_varname(__COUNTER__) = defer_dummy{} * [&]()
// ex)
// FILE* topSecret = fopen("cia.txt");
// defer{ fclose(topSecret); };
#endif // !__DEFER__
https://blukat.me/2021/02/golang-like-defer-in-cpp/
Golang-like Defer in C++ · blukat29
dev 14 Feb 2021 한동안 Go와 C++을 오가며 프로그램을 짰는데, Go의 defer를 C++에 도입하면 편하겠다는 생각이 들어서 인터넷을 뒤져서 구현하는 법을 찾았다. 이런식으로 사용할 수 있다. FILE* fp = fopen(
blukat.me
https://stackoverflow.com/a/42060129/8939955
What is standard defer/finalizer implementation in C++?
General idea of Golang-style defer is explained here and here. I wonder, does STL (of C++11, C++14, ...) or maybe Boost or maybe some other library contain implementation of such a class? So I could
stackoverflow.com
함수가 끝날때 같이 해제하기 defer
go언어의 defer와 거의 비슷하게 제작하였다. C++에서는 finally를 사용할수 있지만 꼭 finally에 넣을수 없는 상황도 있기 때문에아무 함수나 넣을수 있게 하는 defer를 제작1234567891011121314151617181920212223
psbs.tistory.com
반응형