// Copyright Louis Dionne 2013-2017 // 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 #include #include #include #include namespace hana = boost::hana; template struct canonical { static constexpr T value = v; using hana_tag = hana::detail::CanonicalConstant; }; int main() { auto ints = hana::make_tuple( canonical{}, canonical{}, canonical{}, canonical{}, canonical{}, canonical{} ); auto bools = hana::make_tuple(canonical{}, canonical{}); // Constant hana::test::TestConstant>{ints, hana::tuple_t}; hana::test::TestConstant>{bools, hana::tuple_t}; // Monoid, Group, Ring, EuclideanRing hana::test::TestMonoid>{ints}; hana::test::TestGroup>{ints}; hana::test::TestRing>{ints}; hana::test::TestEuclideanRing>{ints}; // Logical { auto ints = hana::make_tuple( canonical{}, canonical{}, canonical{}, canonical{} ); hana::test::TestLogical>{ints}; hana::test::TestLogical>{bools}; } // Comparable and Orderable hana::test::TestComparable>{ints}; hana::test::TestOrderable>{ints}; }