Advertisement
Swiftkill

Member pointer for template

Feb 21st, 2019
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.73 KB | None | 0 0
  1. template<class T>
  2. struct remove_member_pointer {
  3.   typedef T type;
  4. };
  5.  
  6. template<class Parent, class T>
  7. struct remove_member_pointer<T Parent::*> {
  8.   typedef T type;
  9. };
  10.  
  11. template<class T>
  12. struct baseof_member_pointer {
  13.   typedef T type;
  14. };
  15.  
  16. template<class Parent, class T>
  17. struct baseof_member_pointer<T Parent::*> {
  18.   typedef Parent type;
  19. };
  20.  
  21. template<class Owner, class DataType, DataType Owner::*Member, unsigned _pos, unsigned _size>
  22. struct _PtrByteAccess {
  23.   // ...
  24. };
  25.  
  26. // Without C++17 need this
  27. #define PtrByteAccess(MemberPtr, pos, size) \
  28.   _PtrByteAccess<baseof_member_pointer<decltype(MemberPtr)>::type, \
  29.             remove_member_pointer<decltype(MemberPtr)>::type, \
  30.             MemberPtr, pos, size>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement