1. 11 Jun, 2019 1 commit
    • Roland Dreier's avatar
      Fix assertion failure for unions (#1685) (#1709) · 1aa8dd17
      Roland Dreier authored
      In def_readonly and def_readwrite, there is an assertion that the member comes
      from the class or a base class:
      
          static_assert(std::is_base_of<C, type>::value, "...");
      
      However, if C and type are the same type, is_base_of will still only be true
      if they are the same _non-union_ type.  This means we can't define accessors
      for the members of a union type because of this assertion.
      
      Update the assertion to test
      
          std::is_same<C, type>::value || std::is_base_of<C, type>::value
      
      which will allow union types, or members of base classes.
      
      Also add a basic unit test for accessing unions.
      1aa8dd17