【发布时间】:2016-03-10 01:12:33
【问题描述】:
我在某处听说过,使用新的 C++1z 语法,很容易检查是否在可变参数模板参数包中传递了一个类型——显然你可以使用接近一行的代码来做到这一点。这是真的?这些相关的特征是什么? (我尝试查看折叠表达式,但看不到如何在该问题中使用它们...)
以下是我在 C++11 中解决问题的方法以供参考:
#include <type_traits>
template<typename T, typename ...Ts>
struct contains;
template<typename T>
struct contains<T> {
static constexpr bool value = false;
};
template<typename T1, typename T2, typename ...Ts>
struct contains<T1, T2, Ts...> {
static constexpr bool value = std::is_same<T1, T2>::value ? true : contains<T1, Ts...>::value;
};
【问题讨论】:
-
之前我没有看到你说你无法弄清楚折叠表达式语法的部分,我也为此添加了一个示例。
标签: c++ templates typetraits c++17