是否可以在静态 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");