3 // Copyright (c) 2006-2007 Matias Capeletto
5 // Distributed under the Boost Software License, Version 1.0.
6 // (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
9 /// \file relation/detail/metadata_access_builder.hpp
10 /// \brief Define macros to help building metafunctions
12 #ifndef BOOST_BIMAP_RELATION_DETAIL_METADATA_ACCESS_BUILDER_HPP
13 #define BOOST_BIMAP_RELATION_DETAIL_METADATA_ACCESS_BUILDER_HPP
15 #if defined(_MSC_VER) && (_MSC_VER>=1200)
19 #include <boost/config.hpp>
21 #include <boost/bimap/relation/support/is_tag_of_member_at.hpp>
22 #include <boost/bimap/detail/debug/static_error.hpp>
23 #include <boost/utility/enable_if.hpp>
24 #include <boost/preprocessor/cat.hpp>
28 /******************************************************************************
29 BIMAP SYMMETRIC METADATA ACCESS INTERFACE
30 *******************************************************************************
32 template< class Tag, class SymmetricType >
35 typedef -unspecified- type;
38 ******************************************************************************/
41 /*===========================================================================*/
42 #define BOOST_BIMAP_SYMMETRIC_METADATA_ACCESS_BUILDER( \
52 class SymmetricType, \
57 BOOST_BIMAP_STATIC_ERROR( \
58 BOOST_PP_CAT(NAME,_FAILURE), \
63 template< class Tag, class SymmetricType > \
67 BOOST_DEDUCED_TYPENAME enable_if \
69 ::boost::bimaps::relation::support::is_tag_of_member_at_left \
78 typedef BOOST_DEDUCED_TYPENAME SymmetricType::METADATA_BY_LEFT type; \
81 template< class Tag, class SymmetricType > \
85 BOOST_DEDUCED_TYPENAME enable_if \
87 ::boost::bimaps::relation::support::is_tag_of_member_at_right \
96 typedef BOOST_DEDUCED_TYPENAME SymmetricType::METADATA_BY_RIGHT type; \
98 /*===========================================================================*/
101 #endif // BOOST_BIMAP_RELATION_DETAIL_METADATA_ACCES_BUILDER_HPP