pointer_traits.hpp 402 B

12345678910111213141516171819
  1. //
  2. // pointer_traits.hpp
  3. // memory
  4. //
  5. // Created by Sam Jaffe on 7/29/16.
  6. //
  7. #pragma once
  8. #include <type_traits>
  9. namespace detail {
  10. template <typename T>
  11. struct pointer_traits {
  12. using element_type = typename std::remove_reference<decltype(*std::declval<T>())>::type;
  13. using pointer = element_type *;
  14. using reference = typename std::add_lvalue_reference<element_type>::type;
  15. };
  16. }