Skip to content

Commit 22dfd8a

Browse files
committed
Add member function test for struct concept
1 parent daa802d commit 22dfd8a

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

Diff for: test/concept/struct/macro.adapt_struct.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,24 @@ namespace ns {
3030
struct MemberArray {
3131
int array[10];
3232
};
33+
struct MemberFunction {
34+
int memfun(int x) { return x + 1; }
35+
};
3336
}
3437

3538
BOOST_HANA_ADAPT_STRUCT(ns::Data0);
3639
BOOST_HANA_ADAPT_STRUCT(ns::Data1, member1);
3740
BOOST_HANA_ADAPT_STRUCT(ns::Data2, member1, member2);
3841
BOOST_HANA_ADAPT_STRUCT(ns::Data3, member1, member2, member3);
3942
BOOST_HANA_ADAPT_STRUCT(ns::MemberArray, array);
43+
BOOST_HANA_ADAPT_STRUCT(ns::MemberFunction, memfun);
4044

4145
static_assert(hana::Struct<ns::Data0>::value, "");
4246
static_assert(hana::Struct<ns::Data1>::value, "");
4347
static_assert(hana::Struct<ns::Data2>::value, "");
4448
static_assert(hana::Struct<ns::Data3>::value, "");
4549
static_assert(hana::Struct<ns::MemberArray>::value, "");
50+
static_assert(hana::Struct<ns::MemberFunction>::value, "");
4651

4752
int main() {
4853
BOOST_HANA_CONSTANT_CHECK(hana::contains(ns::Data1{}, BOOST_HANA_STRING("member1")));
@@ -55,4 +60,9 @@ int main() {
5560
BOOST_HANA_CONSTANT_CHECK(hana::contains(ns::Data3{}, BOOST_HANA_STRING("member3")));
5661

5762
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);
5868
}

0 commit comments

Comments
 (0)