欢迎来到虫虫下载站 | 资源下载 资源专辑 关于我们
虫虫下载站

identity_converters.hpp

Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
HPP
字号:
// 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 container_adaptor/detail/identity_converters.hpp/// \brief Value and iterators identity converters.#ifndef BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_IDENTITY_CONVERTERS_HPP#define BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_IDENTITY_CONVERTERS_HPP#if defined(_MSC_VER) && (_MSC_VER>=1200)#pragma once#endif#include <boost/config.hpp>namespace boost {namespace bimaps {namespace container_adaptor {/// \brief Details of the container adaptor toolboxnamespace detail {/// \brief Iterator identity converter used by default in container adaptors./**If Iterator and ConstIterator are of the same type one of the convert function is notincluded.                                                                                    **/template<    class BaseIterator              , class Iterator,    class BaseConstIterator         , class ConstIterator>struct iterator_to_base_identity{    BaseIterator operator()(Iterator iter) const    {        return BaseIterator(iter);    }    BaseConstIterator operator()(ConstIterator iter) const    {        return BaseConstIterator(iter);    }};#ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINEStemplate< class BaseIterator, class Iterator >struct iterator_to_base_identity<BaseIterator,Iterator,BaseIterator,Iterator>{    BaseIterator operator()(Iterator iter) const    {        return BaseIterator(iter);    }};#endif // BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES/// \brief Iterator from base identity converter used by default in container adaptors./**If Iterator and ConstIterator are of the same type one of the convert function is notincluded.                                                                                    **/template<    class BaseIterator              , class Iterator,    class BaseConstIterator         , class ConstIterator>struct iterator_from_base_identity{    Iterator operator()(BaseIterator iter) const    {        return Iterator(iter);    }    ConstIterator operator()(BaseConstIterator iter) const    {        return ConstIterator(iter);    }};#ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINEStemplate< class BaseIterator, class Iterator, class ConstIterator >struct iterator_from_base_identity<BaseIterator,Iterator,BaseIterator,ConstIterator>{    Iterator operator()(BaseIterator iter) const    {        return Iterator(iter);    }};#endif // BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES/// \brief Value to base identity converter used by default in container adaptors.template< class BaseValue, class Value >struct value_to_base_identity{    BaseValue operator()(const Value & val) const    {        return BaseValue(val);    }};#ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINEStemplate< class Value >struct value_to_base_identity< Value, Value >{    const Value & operator()(const Value & val) const    {        return val;    }};#endif // BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES/// \brief Value from base identity converter used by default in container adaptors.template< class BaseValue, class Value >struct value_from_base_identity{    Value operator()(const BaseValue & val) const    {        return Value(val);    }};#ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINEStemplate< class Value >struct value_from_base_identity<Value,Value>{    Value & operator()(Value & val) const    {        return val;    }    const Value & operator()(const Value & val) const    {        return val;    }};#endif // BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES/// \brief Key to base identity converter used by default in container adaptors.template< class BaseKey, class Key >struct key_to_base_identity{    BaseKey operator()(const Key & k) const    {        return BaseKey(k);    }};#ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINEStemplate< class Key >struct key_to_base_identity< Key, Key >{    // As default accept any type as key in order to allow container    // adaptors to work with compatible key types    template< class CompatibleKey >    const CompatibleKey & operator()(const CompatibleKey & k) const    {        return k;    }};#endif // BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES} // namespace detail} // namespace container_adaptor} // namespace bimaps} // namespace boost#endif // BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_IDENTITY_CONVERTERS_HPP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -