C++ 模板限制数据类型

此方法需要编译器支持c++20

例子

在下面的例子中,函数foo只能接受intdouble类型的参数。

1
2
3
4
5
6
7
8
9
10
11
#include <type_traits>

template <typename T>
concept VALID = (std::is_same_v<T, int> ||
std::is_same_v<T, double>);

template <VALID T>
int foo(T a)
{
//...
}

例子中的intdouble也可以换成自定义类型。