Mercurial > hg > vamp-build-and-test
view DEPENDENCIES/generic/include/boost/bimap/tags/support/apply_to_value_type.hpp @ 54:6624f5416d67
Use zip -r; and subrepo updates
author | Chris Cannam |
---|---|
date | Fri, 08 Aug 2014 11:39:06 +0100 |
parents | 2665513ce2d3 |
children | c530137014c0 |
line wrap: on
line source
// Boost.Bimap // // Copyright (c) 2006-2007 Matias Capeletto // // 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) /// \file tags/support/apply_to_value_type.hpp /// \brief Similar to mpl::apply but for tagged types. #ifndef BOOST_BIMAP_TAGS_SUPPORT_APPLY_TO_VALUE_TYPE_HPP #define BOOST_BIMAP_TAGS_SUPPORT_APPLY_TO_VALUE_TYPE_HPP #if defined(_MSC_VER) && (_MSC_VER>=1200) #pragma once #endif #include <boost/config.hpp> #include <boost/bimap/tags/tagged.hpp> #include <boost/mpl/apply.hpp> /** \struct boost::bimaps::tags::support::apply_to_value_type \brief Higger order metafunction similar to mpl::apply but for tagged types. \code template< class Metafunction, class TaggedType > struct apply_to_value_type { typedef tagged < Metafuntion< value_type_of< TaggedType >::type >::type, tag_of< TaggedType >::type > type; }; \endcode This higher order metafunctions is very useful, and it can be used with lambda expresions. See also tagged. **/ #ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES namespace boost { namespace bimaps { namespace tags { namespace support { template < class F, class TaggedType > struct apply_to_value_type; template < class F, class ValueType, class Tag > struct apply_to_value_type<F, tagged<ValueType,Tag> > { typedef BOOST_DEDUCED_TYPENAME mpl::apply< F, ValueType >::type new_value_type; typedef tagged< new_value_type, Tag > type; }; } // namespace support } // namespace tags } // namespace bimaps } // namespace boost #endif // BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES #endif // BOOST_BIMAP_TAGS_SUPPORT_APPLY_TO_VALUE_TYPE_HPP