/* @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; constexpr auto applicative = detail::minimal::applicative<>; BOOST_HANA_CONSTEXPR_LAMBDA auto g = [](auto x) { return std::make_tuple(x); }; BOOST_HANA_CONSTEXPR_LAMBDA auto f = [](auto x) { return applicative(g(x)); }; template constexpr auto x = detail::minimal::comparable<>(i); int main() { using A = detail::minimal::Applicative<>; BOOST_HANA_STATIC_ASSERT(traverse(f, just(x<0>)) == applicative(just(g(x<0>)))); BOOST_HANA_STATIC_ASSERT(traverse(f, nothing) == applicative(nothing)); }