sqlite_modern_cpp源码阅读1
sqlite_modern_cpp简介
sqlite_modern_cpp是一个用c++对sqlite3进行封装的库。官网:https://aur.archlinux.org/packages/sqlite_modern_cpp/
GitHub:https://github.com/aminroosta/sqlite_modern_cpp
sqlite_modern_cpp优点
1.sqlite_modern_cpp是一个c++17标准的库,全部由头文件编写,不用额外编译动态链接库。
2. 对sqlite3进行了深度的封装,使用起来很方便。把“<<”和“>>”操作符重载,sql语句可以直接以流的方式执行。简单又快捷,傻瓜式操作,再也不用考虑sqlite3的各种api接口函数。
3. 回调函数可以使用一个简单的lambda表达式加一个“>>”操作符,再也不用考虑各种参数。
4. 优秀的异常处理机制。
sqlite_modern_cpp的源码分析
利用std::optional减小系统开支
// std::optional support for NULL values
#ifdef MODERN_SQLITE_STD_OPTIONAL_SUPPORT
#ifdef MODERN_SQLITE_EXPERIMENTAL_OPTIONAL_SUPPORT
template<class T>
using optional = std::experimental::optional<T>;
#else
template<class T>
using optional = std::optional<T>;
#endif
#endif
有时候一个对象构造成本很高(资源分配等),可用optional返回一个空对象,提高效率。
巧妙的tuple_iterate
代码片段:
class database_binder</