/* @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; //! [is_convertible] struct Person { }; struct Employee : Person { }; static_assert(is_convertible{}, ""); static_assert(!is_convertible{}, ""); static_assert(is_convertible{}, ""); //! [is_convertible] //! [to] 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 tuple(xs.first, xs.second, xs.third); } }; }} int main() { BOOST_HANA_CONSTEXPR_CHECK( to(triple(1, '2', 3.3)) == tuple(1, '2', 3.3) ); } //! [to]