/Src/Dependencies/Boost/boost/fusion/support/detail/access.hpp

http://hadesmem.googlecode.com/ · C++ Header · 64 lines · 47 code · 11 blank · 6 comment · 0 complexity · b8f080637ee9d65df30fbf2e7b8704bd MD5 · raw file

  1. /*=============================================================================
  2. Copyright (c) 2001-2006 Joel de Guzman
  3. Distributed under the Boost Software License, Version 1.0. (See accompanying
  4. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. ==============================================================================*/
  6. #if !defined(FUSION_ACCESS_04182005_0737)
  7. #define FUSION_ACCESS_04182005_0737
  8. #include <boost/type_traits/add_const.hpp>
  9. #include <boost/type_traits/add_reference.hpp>
  10. namespace boost { namespace fusion { namespace detail
  11. {
  12. template <typename T>
  13. struct ref_result
  14. {
  15. typedef typename add_reference<typename T::type>::type type;
  16. };
  17. template <typename T>
  18. struct cref_result
  19. {
  20. typedef typename
  21. add_reference<
  22. typename add_const<typename T::type>::type
  23. >::type
  24. type;
  25. };
  26. template <typename T>
  27. struct call_param
  28. {
  29. typedef T const& type;
  30. };
  31. template <typename T>
  32. struct call_param<T &>
  33. {
  34. typedef T& type;
  35. };
  36. template <typename T>
  37. struct call_param<T const>
  38. {
  39. typedef T const& type;
  40. };
  41. template <typename T>
  42. struct call_param<T volatile>
  43. {
  44. typedef T const& type;
  45. };
  46. template <typename T>
  47. struct call_param<T const volatile>
  48. {
  49. typedef T const& type;
  50. };
  51. }}}
  52. #endif