using lamda to make RAII idom
来源:互联网 发布:mac只装win10单系统 编辑:程序博客网 时间:2024/05/29 16:06
#define _CRT_SECURE_NO_WARNINGS#include <cstdlib>#include <cstdio>#include <iostream>template<typename ctor, typename dtor, typename T>class scoped_object{ public: scoped_object(ctor c, dtor d): t_(c()), dtor_(d){} ~scoped_object() { dtor_(t_); } operator T& () { return t_; } private: T t_; dtor dtor_;};#define def_scoped_object(ctor, dtor, obj) \scoped_object<decltype(ctor), decltype(dtor), decltype(ctor())> obj(ctor, dtor);int main(){ //mollac and freee { auto ctor = [](){ return (int*)malloc(5* sizeof(int));}; auto dtor = [](int* p){ free(p);}; def_scoped_object(ctor, dtor, p); for(int i = 0; i < 5; ++i) { p[i] = i*i; } for(int i = 0; i < 5; ++i) { std::cout << p[i] << std::endl; } } //fopen fclose { auto ctor = [](){ return fopen("input.txt", "r");}; auto dtor = [](FILE* p){ if(p) fclose(p);}; def_scoped_object(ctor, dtor, fs); int ch; if(fs) { while((ch=fgetc(fs)) != EOF) { std::cout <<(char)ch << std::endl; } } } return 0;}
The code is not beautifull yet, but it works. The RAII is pretty usefull with C resource management API to have a exception-safe function.
0 0
- using lamda to make RAII idom
- How to Make Circle Images using CSS
- How to Make Dynamic Hyperlinks Using C# in ASP.NET
- Actionable Web Analytics: Using Data to Make Smart Business Decisions
- Using XML::XSLT to make your test results pretty
- How to make dll and lib using bakefile.
- Using Maven Assembly Plugin to make an independent jar file.
- Demand response: using your data center to make money
- DEMAND RESPONSE: USING YOUR DATA CENTER TO MAKE MONEY
- the advantages of using SRL16 to make large delay
- How to make Flappy Bird like game using Cocos2D
- How to make a Web crawler using Java?
- Lamda
- RAII
- RAII
- RAII
- RAII
- RAII
- 阿里巴巴研发题目
- linux下启动参数大杂烩
- usbip(usboverip)远程设备映射搭建
- 《黑马程序员》 CyclicBarrier的使用练习
- Cython编程入门
- using lamda to make RAII idom
- 虚线边框实现
- "高内聚,低耦合"浅显理解
- Palindrome Partitioning -- LeetCode
- 滑动菜单栏slidingmenu,实现简单例子,UI学习之路三
- df 与du的不同
- mongoDB第六讲
- oracle的结构体系
- Python中对象的理解:引用和赋值