/* @copyright Louis Dionne 2014 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) */ #include #include #include #include #include using namespace boost::hana; template constexpr auto x = int_; BOOST_HANA_CONSTEXPR_LAMBDA auto check = [](auto ...xs) { auto eq = [=](auto s) { return equal(to(s), set(xs...)); }; return and_( all(eq, permutations(list(xs...))), not_(equal(set(xs...), set(xs..., x<999>))) ); }; int main() { BOOST_HANA_STATIC_ASSERT(check()); BOOST_HANA_STATIC_ASSERT(check(x<0>)); BOOST_HANA_STATIC_ASSERT(check(x<0>, x<1>)); BOOST_HANA_STATIC_ASSERT(check(x<0>, x<1>, x<2>)); }