SFINAE

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
#include <type_traits>
#include <vector>
//
// Created by lhy on 24-8-10.
//
///加一个Other是为了不重定义
///decltype会推导失败
///因此不参与重载决议
// template<typename T>
// class a<T,std::void_t<decltype(std::declval<T>().operator+(1))>> {
//
// };
///实际上enable_if的逻辑与上述方法完全一致,只不过进行了包装
// template<typename T,typename dummy=void>
// class a {

// };
void fun(int a){
}
void fun(double a){
}
template<typename T,typename=std::enable_if_t<std::is_integral_v<T>,double>>
class a {

};

int main() {
a<int> a1;
// a<std::vector<int>> a2;
}

SFINAE
https://lhish.github.io/project/hide/SFINAE/
作者
lhy
发布于
2025年8月16日
许可协议