C++模板需要一个Concept类型作为模板参数传入时,如何用lambda代替
先上代码
场景是,C++使用RAII特性管理资源,比如使用unique_ptr管理一个数据库的连接,需要自定义一个数据库连接句柄的释放器,STL的手册称之为Deletor,这个Deletor一般是用下面1的方式定义一个函数对象来实现。
#include <iostream>
#include <cstdlib>
#include <memory>
#include <string>
#include <functional>
using namespace std;
class go
{
public:
go() {}
~go()
{
cout << "go die.\

本文探讨了在C++中,当模板需要一个Concept类型参数时,尝试使用lambda表达式代替所遇到的问题。由于lambda表达式类型没有默认构造函数和被删除的拷贝赋值操作符,导致无法直接作为unique_ptr等需要特定构造函数的模板参数。解决方案是利用类型推导关键字,并在设计模板和Concept时考虑兼容Lambda表达式。
最低0.47元/天 解锁文章
1336

被折叠的 条评论
为什么被折叠?



