/* @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 #include #include using namespace boost::hana; struct StdVector; struct StdList; namespace boost { namespace hana { template struct datatype> { using type = StdVector; }; template <> struct Comparable::instance { template static auto equal_impl(std::vector xs, std::vector ys) { return xs == ys; } }; template <> struct convert { template static std::vector apply(std::list xs) { std::vector v{}; for (auto x: xs) v.push_back(x); return v; } }; }} int main() { auto xs = list( std::list{1, 2, 3, 4}, std::list{'1', '2', '3', '4'}, std::list{"1", "2", "3", "4"} ); assert(fmap(to, xs) == list( std::vector{1, 2, 3, 4}, std::vector{'1', '2', '3', '4'}, std::vector{"1", "2", "3", "4"} )); }