/* @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; template constexpr auto key = int_; template constexpr auto value = int_; template BOOST_HANA_CONSTEXPR_LAMBDA auto p = pair(key, value); BOOST_HANA_CONSTEXPR_LAMBDA auto is = [](auto x) { return [=](auto y) { return equal(x, y); }; }; int main() { BOOST_HANA_STATIC_ASSERT(find(is(key<1>), map()) == nothing); BOOST_HANA_STATIC_ASSERT(find(is(key<1>), map(p<1, 1>)) == just(value<1>)); BOOST_HANA_STATIC_ASSERT(find(is(key<2>), map(p<1, 1>)) == nothing); BOOST_HANA_STATIC_ASSERT(find(is(key<1>), map(p<1, 1>, p<2, 2>)) == just(value<1>)); BOOST_HANA_STATIC_ASSERT(find(is(key<2>), map(p<1, 1>, p<2, 2>)) == just(value<2>)); BOOST_HANA_STATIC_ASSERT(find(is(key<3>), map(p<1, 1>, p<2, 2>)) == nothing); }