#include <iostream>
#include <string>
#include <vector>
struct Customer{
Customer(std::string name_):name(name_){}
std::string name;
};
struct CustomerEq{
bool operator() (const Customer& l, const Customer& r) {
return l.name == r.name;
}
};
struct CustomerHash{
size_t operator()(const Customer& c) {
return std::hash<std::string>()(c.name);
}
};
// 使用变成实现多重继承
template<typename... Bases>
struct CustomerOp: Bases... {
// 使用父类的仿函数对象
using Bases::operator()...;
};
void Test(){
CustomerOp<CustomerHash, CustomerEq> cust;
Customer c("ts");
std::cout<<cust(c)<<std::endl;
std::cout<<std::boolalpha<<cust(c, Customer("js"))<<std::endl;
}
int main()
{
Test();
}
变参基类
最新推荐文章于 2025-02-04 15:36:48 发布