// 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 namespace hana = boost::hana; template struct Triple { X first; Y second; Z third; }; BOOST_HANA_CONSTEXPR_LAMBDA auto triple = [](auto x, auto y, auto z) { return Triple{x, y, z}; }; namespace boost { namespace hana { template struct to_impl> { static constexpr auto apply(Triple xs) { return make_tuple(xs.first, xs.second, xs.third); } }; }} int main() { BOOST_HANA_CONSTEXPR_CHECK( hana::to(triple(1, '2', 3.3)) == hana::make_tuple(1, '2', 3.3) ); }