(23条消息) 变参基类_最后冰吻free的博客-CSDN博客

PHOTO EMBED

Thu Nov 24 2022 06:08:04 GMT+0000 (Coordinated Universal Time)

Saved by @leawoliu

#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();
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
content_copyCOPY

https://blog.csdn.net/CodeHouse/article/details/126431599