是否可以在静态 vector_c 上使用 boost::mpl::contains?
Is it possible to use boost::mpl::contains on a static vector_c?
我正在寻找 this question 的不那么笨拙的答案,即在编译时检查模板参数是否在数字列表中。我不仅想检查函数的范围,还想在编译时检查整数是否在任意整数列表中。该答案的作者写道 "Things will be much easier when C++0x is out with constexpr, static_assert and user defined literals," 但我不明白 确切地 如何。
我想使用 this boost::mpl::contains 函数(或任何它的名字),但它只需要一个类型作为第二个参数。
只是为了好玩:
template <int first, int... last>
struct int_list {
static bool constexpr check(int c) {
return first == c ? true : int_list<last...>::check(c);
}
};
template <int first>
struct int_list<first> {
static bool constexpr check(int c) { return c == first; }
};
using my_sequence = int_list<1, 5, 12, 45, 76, 60>;
static_assert(my_sequence::check(10), "No tenner");
我正在寻找 this question 的不那么笨拙的答案,即在编译时检查模板参数是否在数字列表中。我不仅想检查函数的范围,还想在编译时检查整数是否在任意整数列表中。该答案的作者写道 "Things will be much easier when C++0x is out with constexpr, static_assert and user defined literals," 但我不明白 确切地 如何。
我想使用 this boost::mpl::contains 函数(或任何它的名字),但它只需要一个类型作为第二个参数。
只是为了好玩:
template <int first, int... last>
struct int_list {
static bool constexpr check(int c) {
return first == c ? true : int_list<last...>::check(c);
}
};
template <int first>
struct int_list<first> {
static bool constexpr check(int c) { return c == first; }
};
using my_sequence = int_list<1, 5, 12, 45, 76, 60>;
static_assert(my_sequence::check(10), "No tenner");