// Copyright David Abrahams 2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_PARENTHESIZED_TYPE_HPP #define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_PARENTHESIZED_TYPE_HPP namespace boost { namespace parameter { namespace aux { // A metafunction that transforms void(*)(T) -> T template struct unaryfunptr_arg_type; template struct unaryfunptr_arg_type { typedef Arg type; }; template <> struct unaryfunptr_arg_type { typedef void type; }; }}} // namespace boost::parameter::aux // A macro that takes a parenthesized C++ type name (T) and transforms it // into an un-parenthesized type expression equivalent to T. #define BOOST_PARAMETER_PARENTHESIZED_TYPE(x) \ ::boost::parameter::aux::unaryfunptr_arg_type< void(*)x >::type #endif // include guard