/* @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 "minimal.hpp" using namespace boost::hana; namespace boost { namespace hana { template <> struct Monad::instance : Monad::bind_mcd { template static constexpr auto bind_impl(M m, F f) { return f(m.value); } }; }} int main() { BOOST_HANA_STATIC_ASSERT(detail::laws( monad{1}, 2, [](auto x) { return monad{x + 1}; }, [](auto x) { return monad{x * 2}; } )); }