@@ -30,19 +30,24 @@ namespace ns {
30
30
struct MemberArray {
31
31
int array[10 ];
32
32
};
33
+ struct MemberFunction {
34
+ int memfun (int x) { return x + 1 ; }
35
+ };
33
36
}
34
37
35
38
BOOST_HANA_ADAPT_STRUCT (ns::Data0);
36
39
BOOST_HANA_ADAPT_STRUCT (ns::Data1, member1);
37
40
BOOST_HANA_ADAPT_STRUCT (ns::Data2, member1, member2);
38
41
BOOST_HANA_ADAPT_STRUCT (ns::Data3, member1, member2, member3);
39
42
BOOST_HANA_ADAPT_STRUCT (ns::MemberArray, array);
43
+ BOOST_HANA_ADAPT_STRUCT (ns::MemberFunction, memfun);
40
44
41
45
static_assert (hana::Struct<ns::Data0>::value, " " );
42
46
static_assert (hana::Struct<ns::Data1>::value, " " );
43
47
static_assert (hana::Struct<ns::Data2>::value, " " );
44
48
static_assert (hana::Struct<ns::Data3>::value, " " );
45
49
static_assert (hana::Struct<ns::MemberArray>::value, " " );
50
+ static_assert (hana::Struct<ns::MemberFunction>::value, " " );
46
51
47
52
int main () {
48
53
BOOST_HANA_CONSTANT_CHECK (hana::contains (ns::Data1{}, BOOST_HANA_STRING (" member1" )));
@@ -55,4 +60,9 @@ int main() {
55
60
BOOST_HANA_CONSTANT_CHECK (hana::contains (ns::Data3{}, BOOST_HANA_STRING (" member3" )));
56
61
57
62
BOOST_HANA_CONSTANT_CHECK (hana::contains (ns::MemberArray{}, BOOST_HANA_STRING (" array" )));
63
+
64
+ BOOST_HANA_CONSTANT_CHECK (hana::contains (ns::MemberFunction{}, BOOST_HANA_STRING (" memfun" )));
65
+
66
+ constexpr auto accessors = hana::accessors<ns::MemberFunction>();
67
+ BOOST_HANA_RUNTIME_CHECK (hana::second (accessors[hana::size_c<0 >])(ns::MemberFunction{})(1 ) == 2 );
58
68
}
0 commit comments