message: Move call of object reflector_verify from visitor destructor to explicit call in visit
diff: @@ -86,8 +86,8 @@ struct reflector_verifier_visitor {
  explicit reflector_verifier_visitor( Class& c )
  : obj(c) {}
  - ~reflector_verifier_visitor() noexcept(false) {
  - verify( obj );
  + void reflector_verify() {
  + reflect_verify( obj );
  }
  private:
  @@ -103,7 +103,7 @@ struct reflector_verifier_visitor {
  auto verify_imp(const T& t, long) -> decltype(t, void()) {}
  template<typename T>
  - auto verify(const T& t) -> decltype(verify_imp(t, 0), void()) {
  + auto reflect_verify(const T& t) -> decltype(verify_imp(t, 0), void()) {
  verify_imp(t, 0);
  }
  @@ -145,6 +145,7 @@ template<typename Visitor>\
  static inline void visit( const Visitor& v ) { \
  BOOST_PP_SEQ_FOR_EACH( FC_REFLECT_VISIT_BASE, v, INHERITS ) \
  BOOST_PP_SEQ_FOR_EACH( FC_REFLECT_VISIT_MEMBER, v, MEMBERS ) \
  + verify( v ); \
  }
  #define FC_REFLECT_DERIVED_IMPL_EXT( TYPE, INHERITS, MEMBERS ) \
  @@ -252,6 +253,16 @@ template<> struct reflector<TYPE> {\
  typedef TYPE type; \
  typedef fc::true_type is_defined; \
  typedef fc::false_type is_enum; \
  + template<typename Visitor> \
  + static auto verify_imp(const Visitor& v, int) -> decltype(v.reflector_verify(), void()) { \
  + v.reflector_verify(); \
  + } \
  + template<typename Visitor> \
  + static auto verify_imp(const Visitor& v, long) -> decltype(v, void()) {} \
  + template<typename Visitor> \
  + static auto verify(const Visitor& v) -> decltype(verify_imp(v, 0), void()) { \
  + verify_imp(v, 0); \
  + } \
  enum member_count_enum { \
  local_member_count = 0 BOOST_PP_SEQ_FOR_EACH( FC_REFLECT_MEMBER_COUNT, +, MEMBERS ),\
  total_member_count = local_member_count BOOST_PP_SEQ_FOR_EACH( FC_REFLECT_BASE_MEMBER_COUNT, +, INHERITS )\
  @@ -265,6 +276,16 @@ template<BOOST_PP_SEQ_ENUM(TEMPLATE_ARGS)> struct reflector<TYPE> {\
  typedef TYPE type; \
  typedef fc::true_type is_defined; \
  typedef fc::false_type is_enum; \
  + template<typename Visitor> \
  + static auto verify_imp(const Visitor& v, int) -> decltype(v.reflector_verify(), void()) { \
  + v.reflector_verify(); \
  + } \
  + template<typename Visitor> \
  + static auto verify_imp(const Visitor& v, long) -> decltype(v, void()) {} \
  + template<typename Visitor> \
  + static auto verify(const Visitor& v) -> decltype(verify_imp(v, 0), void()) { \
  + verify_imp(v, 0); \
  + } \
  enum member_count_enum { \
  local_member_count = 0 BOOST_PP_SEQ_FOR_EACH( FC_REFLECT_MEMBER_COUNT, +, MEMBERS ),\
  total_member_count = local_member_count BOOST_PP_SEQ_FOR_EACH( FC_REFLECT_BASE_MEMBER_COUNT, +, INHERITS )\
  