【发布时间】:2019-06-23 00:00:18
【问题描述】:
如果T 是Ts... 之一,我想编写一个返回true 的函数
template<class T, class... Ts>
bool is_one_of<T, Ts...>();
例如,is_one_of<int, double, int, float> 返回true,is_one_of<int, double, std::string, bool, bool> 返回false。
我自己的实现是
template<class T1, class T2>
bool is_one_of<T1, T2>() {
return std::is_same<T1, T2>;
}
template<class T1, class T2, class... Ts>
bool is_one_of<T1, T2, Ts...>() {
if (std::is_same<T1, T2>) {
return true;
}
else {
return is_one_of<T1, Ts...>();
}
}
这个检查对我来说似乎很常见,所以我想知道标准库中是否已经有这样的功能。
【问题讨论】: