]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/hana/test/concept/struct/macro.adapt_struct.cpp
1 // Copyright Louis Dionne 2013-2017
2 // Distributed under the Boost Software License, Version 1.0.
3 // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
5 #include <boost/hana/adapt_struct.hpp>
6 #include <boost/hana/assert.hpp>
7 #include <boost/hana/concept/struct.hpp>
8 #include <boost/hana/contains.hpp>
9 #include <boost/hana/string.hpp>
11 #include <laws/base.hpp>
12 namespace hana
= boost::hana
;
13 using hana::test::ct_eq
;
35 BOOST_HANA_ADAPT_STRUCT(ns::Data0
);
36 BOOST_HANA_ADAPT_STRUCT(ns::Data1
, member1
);
37 BOOST_HANA_ADAPT_STRUCT(ns::Data2
, member1
, member2
);
38 BOOST_HANA_ADAPT_STRUCT(ns::Data3
, member1
, member2
, member3
);
39 BOOST_HANA_ADAPT_STRUCT(ns::MemberArray
, array
);
41 static_assert(hana::Struct
<ns::Data0
>::value
, "");
42 static_assert(hana::Struct
<ns::Data1
>::value
, "");
43 static_assert(hana::Struct
<ns::Data2
>::value
, "");
44 static_assert(hana::Struct
<ns::Data3
>::value
, "");
45 static_assert(hana::Struct
<ns::MemberArray
>::value
, "");
48 BOOST_HANA_CONSTANT_CHECK(hana::contains(ns::Data1
{}, BOOST_HANA_STRING("member1")));
50 BOOST_HANA_CONSTANT_CHECK(hana::contains(ns::Data2
{}, BOOST_HANA_STRING("member1")));
51 BOOST_HANA_CONSTANT_CHECK(hana::contains(ns::Data2
{}, BOOST_HANA_STRING("member2")));
53 BOOST_HANA_CONSTANT_CHECK(hana::contains(ns::Data3
{}, BOOST_HANA_STRING("member1")));
54 BOOST_HANA_CONSTANT_CHECK(hana::contains(ns::Data3
{}, BOOST_HANA_STRING("member2")));
55 BOOST_HANA_CONSTANT_CHECK(hana::contains(ns::Data3
{}, BOOST_HANA_STRING("member3")));
57 BOOST_HANA_CONSTANT_CHECK(hana::contains(ns::MemberArray
{}, BOOST_HANA_STRING("array")));