123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- // 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 relation/detail/static_access_builder.hpp
- /// \brief Define macros to help building metafunctions
- #ifndef BOOST_BIMAP_RELATION_DETAIL_STATIC_ACCESS_BUILDER_HPP
- #define BOOST_BIMAP_RELATION_DETAIL_STATIC_ACCESS_BUILDER_HPP
- #if defined(_MSC_VER)
- #pragma once
- #endif
- #include <boost/config.hpp>
- #include <boost/bimap/relation/support/is_tag_of_member_at.hpp>
- #include <boost/bimap/detail/debug/static_error.hpp>
- #include <boost/core/enable_if.hpp>
- #include <boost/preprocessor/cat.hpp>
- /******************************************************************************
- BIMAP SYMMETRIC STATIC ACCESS INTERFACE
- *******************************************************************************
- template< class Tag, class SYMETRIC_TYPE >
- struct NAME
- {
- -UNDEFINED BODY-;
- };
- ******************************************************************************/
- /*===========================================================================*/
- #define BOOST_BIMAP_SYMMETRIC_STATIC_ACCESS_BUILDER( \
- \
- NAME, \
- SYMMETRIC_TYPE, \
- LEFT_BODY, \
- RIGHT_BODY \
- ) \
- \
- template \
- < \
- class Tag, \
- class SYMMETRIC_TYPE, \
- class Enable = void \
- > \
- struct NAME \
- { \
- BOOST_BIMAP_STATIC_ERROR( \
- BOOST_PP_CAT(NAME,_FAILURE), \
- (SYMMETRIC_TYPE,Tag) \
- ); \
- }; \
- \
- template< class Tag, class SYMMETRIC_TYPE > \
- struct NAME \
- < \
- Tag, SYMMETRIC_TYPE, \
- BOOST_DEDUCED_TYPENAME enable_if \
- < \
- ::boost::bimaps::relation::support::is_tag_of_member_at_left \
- < \
- Tag, \
- SYMMETRIC_TYPE \
- > \
- \
- >::type \
- > \
- { \
- LEFT_BODY; \
- }; \
- \
- template< class Tag, class SYMMETRIC_TYPE > \
- struct NAME \
- < \
- Tag, SYMMETRIC_TYPE, \
- BOOST_DEDUCED_TYPENAME enable_if \
- < \
- ::boost::bimaps::relation::support::is_tag_of_member_at_right \
- < \
- Tag, \
- SYMMETRIC_TYPE \
- > \
- \
- >::type \
- > \
- { \
- RIGHT_BODY; \
- };
- /*===========================================================================*/
- #endif // BOOST_BIMAP_RELATION_DETAIL_STATIC_ACCES_BUILDER_HPP
|