get_signature.hpp 724 B

123456789101112131415161718192021222324252627282930313233
  1. // Boost.TypeErasure library
  2. //
  3. // Copyright 2012 Steven Watanabe
  4. //
  5. // Distributed under the Boost Software License Version 1.0. (See
  6. // accompanying file LICENSE_1_0.txt or copy at
  7. // http://www.boost.org/LICENSE_1_0.txt)
  8. //
  9. // $Id$
  10. #ifndef BOOST_TYPE_ERASURE_DETAIL_GET_SIGNATURE_HPP_INCLUDED
  11. #define BOOST_TYPE_ERASURE_DETAIL_GET_SIGNATURE_HPP_INCLUDED
  12. #include <boost/typeof/typeof.hpp>
  13. #include <boost/type_traits/remove_pointer.hpp>
  14. namespace boost {
  15. namespace type_erasure {
  16. namespace detail {
  17. template<class Concept>
  18. struct get_signature {
  19. BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, &Concept::apply)
  20. typedef typename boost::remove_pointer<
  21. typename nested::type
  22. >::type type;
  23. };
  24. }
  25. }
  26. }
  27. #endif