/* @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 #include using namespace boost::hana; int main() { //! [liftable] using operators::operator!; // required to negate the result of std::is_integral BOOST_HANA_CONSTANT_ASSERT(trait(type)); BOOST_HANA_CONSTANT_ASSERT(!trait(type)); //! [liftable] //! [nonliftable] BOOST_HANA_CONSTEXPR_LAMBDA auto extent = [](auto t, auto n) { return std::extent{}; }; BOOST_HANA_CONSTANT_ASSERT(extent(type, int_<1>) == int_<0>); BOOST_HANA_CONSTANT_ASSERT(extent(type, int_<1>) == int_<2>); //! [nonliftable] }