Chris@16: // Boost.Bimap Chris@16: // Chris@16: // Copyright (c) 2006-2007 Matias Capeletto Chris@16: // Chris@16: // Distributed under the Boost Software License, Version 1.0. Chris@16: // (See accompanying file LICENSE_1_0.txt or copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: /// \file relation/member_at.hpp Chris@16: /// \brief Defines the tags for the member_at::side idiom Chris@16: Chris@16: #ifndef BOOST_BIMAP_RELATION_MEMBER_AT_HPP Chris@16: #define BOOST_BIMAP_RELATION_MEMBER_AT_HPP Chris@16: Chris@101: #if defined(_MSC_VER) Chris@16: #pragma once Chris@16: #endif Chris@16: Chris@16: #include Chris@16: Chris@16: namespace boost { Chris@16: namespace bimaps { Chris@16: namespace relation { Chris@16: Chris@16: /// \brief member_at::side idiom to access relation values and types using metaprogramming. Chris@16: /** Chris@16: Chris@16: This tags are used to specify which member you want to acces when using a metafunction over Chris@16: a symmetrical type. The idea is to be able to write code like: Chris@16: Chris@16: \code Chris@16: result_of::get::type data = get(rel); Chris@16: \endcode Chris@16: Chris@16: The relation class supports this idiom even when the elements are tagged. This is useful Chris@16: because a user can decide to start tagging in any moment of the development. Chris@16: Chris@16: See also member_with_tag, is_tag_of_member_at_left, is_tag_of_member_at_right, get Chris@16: value_type_of, pair_by, pair_type_by. Chris@16: Chris@16: \ingroup relation_group Chris@16: **/ Chris@16: namespace member_at { Chris@16: Chris@16: /// \brief Member at left tag Chris@16: /** Chris@16: See also member_at, rigth. Chris@16: **/ Chris@16: Chris@16: struct left {}; Chris@16: Chris@16: /// \brief Member at right tag Chris@16: /** Chris@16: See also member_at, left. Chris@16: **/ Chris@16: Chris@16: struct right {}; Chris@16: Chris@16: /// \brief Member info tag Chris@16: /** Chris@16: See also member_at, left, right. Chris@16: **/ Chris@16: Chris@16: struct info {}; Chris@16: Chris@16: } Chris@16: Chris@16: } // namespace relation Chris@16: } // namespace bimaps Chris@16: } // namespace boost Chris@16: Chris@16: #endif // BOOST_BIMAP_RELATION_MEMBER_AT_HPP