From 22dfd8a118d7dff4d3a86a42ecbb8766fb7050f5 Mon Sep 17 00:00:00 2001 From: Samuel Debionne Date: Tue, 11 Jun 2019 10:23:12 +0200 Subject: [PATCH] Add member function test for struct concept --- test/concept/struct/macro.adapt_struct.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/concept/struct/macro.adapt_struct.cpp b/test/concept/struct/macro.adapt_struct.cpp index 6aec33d5c5..518bc6b25d 100644 --- a/test/concept/struct/macro.adapt_struct.cpp +++ b/test/concept/struct/macro.adapt_struct.cpp @@ -30,6 +30,9 @@ namespace ns { struct MemberArray { int array[10]; }; + struct MemberFunction { + int memfun(int x) { return x + 1; } + }; } BOOST_HANA_ADAPT_STRUCT(ns::Data0); @@ -37,12 +40,14 @@ BOOST_HANA_ADAPT_STRUCT(ns::Data1, member1); BOOST_HANA_ADAPT_STRUCT(ns::Data2, member1, member2); BOOST_HANA_ADAPT_STRUCT(ns::Data3, member1, member2, member3); BOOST_HANA_ADAPT_STRUCT(ns::MemberArray, array); +BOOST_HANA_ADAPT_STRUCT(ns::MemberFunction, memfun); static_assert(hana::Struct::value, ""); static_assert(hana::Struct::value, ""); static_assert(hana::Struct::value, ""); static_assert(hana::Struct::value, ""); static_assert(hana::Struct::value, ""); +static_assert(hana::Struct::value, ""); int main() { BOOST_HANA_CONSTANT_CHECK(hana::contains(ns::Data1{}, BOOST_HANA_STRING("member1"))); @@ -55,4 +60,9 @@ int main() { BOOST_HANA_CONSTANT_CHECK(hana::contains(ns::Data3{}, BOOST_HANA_STRING("member3"))); BOOST_HANA_CONSTANT_CHECK(hana::contains(ns::MemberArray{}, BOOST_HANA_STRING("array"))); + + BOOST_HANA_CONSTANT_CHECK(hana::contains(ns::MemberFunction{}, BOOST_HANA_STRING("memfun"))); + + constexpr auto accessors = hana::accessors(); + BOOST_HANA_RUNTIME_CHECK(hana::second(accessors[hana::size_c<0>])(ns::MemberFunction{})(1) == 2); }