// 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/default_tagged.hpp /// \brief Weak tagging #ifndef BOOST_BIMAP_TAGS_SUPPORT_DEFAULT_TAGGED_HPP #define BOOST_BIMAP_TAGS_SUPPORT_DEFAULT_TAGGED_HPP #if defined(_MSC_VER) #pragma once #endif #include #include /** \struct boost::bimaps::tags::support::default_tagged \brief Weak tagging metafunction \code template< class Type, class Tag > struct default_tagged { typedef {TaggedType} type; }; \endcode If the type is not tagged, this metafunction returns a tagged type with the default tag. If it is tagged, the returns the type unchanged. See also tagged, overwrite_tagged. **/ #ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES namespace boost { namespace bimaps { namespace tags { namespace support { // Default Tagging // A metafunction that create a tagged type with a default tag value. template< class Type, class DefaultTag > struct default_tagged { typedef tagged type; }; template< class Type, class OldTag, class NewTag > struct default_tagged< tagged< Type, OldTag >, NewTag > { typedef tagged type; }; } // namespace support } // namespace tags } // namespace bimaps } // namespace boost #endif // BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES #endif // BOOST_BIMAP_TAGS_SUPPORT_DEFAULT_TAGGED_HPP