Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
#ifndef GENERS_IOPOINTEETYPE_HH_
#define GENERS_IOPOINTEETYPE_HH_

namespace gs {
  template <typename T>
  struct IOPointeeType;

  template <typename T>
  struct IOPointeeType<T *> {
    typedef T type;
  };

  template <typename T>
  struct IOPointeeType<T *const> {
    typedef T type;
  };

  template <typename T>
  struct IOPointeeType<T *volatile> {
    typedef T type;
  };

  template <typename T>
  struct IOPointeeType<T *const volatile> {
    typedef T type;
  };
}  // namespace gs

#endif  // GENERS_IOPOINTEETYPE_HH_