/* @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 using namespace 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 convert> { static constexpr auto apply(Triple xs) { return tuple(xs.first, xs.second, xs.third); } }; }} int main() { BOOST_HANA_CONSTEXPR_CHECK(to(triple(1, '2', 3.3)) == tuple(1, '2', 3.3)); }