mirror of
https://github.com/boostorg/mpl.git
synced 2025-08-01 05:44:37 +02:00
Specializing insert_range for aux::map_tag
Taking advantage of the fact that order of insertion doesn't really matter for associative sequences. Comparing to the default implementation, which at any rate does work for associative sequences, this specialization essencially avoids reinserting every element of Sequence into a new sequence, besides the fact no joint_view nor iterator_range needs to be instantiated.
This commit is contained in:
41
include/boost/mpl/map/aux_/insert_range_impl.hpp
Normal file
41
include/boost/mpl/map/aux_/insert_range_impl.hpp
Normal file
@@ -0,0 +1,41 @@
|
||||
|
||||
#ifndef BOOST_MPL_MAP_AUX_INSERT_RANGE_IMPL_HPP_INCLUDED
|
||||
#define BOOST_MPL_MAP_AUX_INSERT_RANGE_IMPL_HPP_INCLUDED
|
||||
|
||||
// Copyright Bruno Dutra 2015
|
||||
//
|
||||
// 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)
|
||||
//
|
||||
// See http://www.boost.org/libs/mpl for documentation.
|
||||
|
||||
// $Id$
|
||||
// $Date$
|
||||
// $Revision$
|
||||
|
||||
#include <boost/mpl/insert_range_fwd.hpp>
|
||||
#include <boost/mpl/map/aux_/tag.hpp>
|
||||
#include <boost/mpl/placeholders.hpp>
|
||||
#include <boost/mpl/fold.hpp>
|
||||
#include <boost/mpl/insert.hpp>
|
||||
|
||||
namespace boost { namespace mpl {
|
||||
|
||||
template<>
|
||||
struct insert_range_impl< aux::map_tag >
|
||||
{
|
||||
template<
|
||||
typename Sequence
|
||||
, typename /*Pos*/
|
||||
, typename Range
|
||||
>
|
||||
struct apply
|
||||
: fold<Range, Sequence, insert<_1, _2> >
|
||||
{
|
||||
};
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
#endif // BOOST_MPL_MAP_AUX_INSERT_RANGE_IMPL_HPP_INCLUDED
|
@@ -19,6 +19,7 @@
|
||||
#include <boost/mpl/map/aux_/at_impl.hpp>
|
||||
//#include <boost/mpl/map/aux_/O1_size.hpp>
|
||||
#include <boost/mpl/map/aux_/insert_impl.hpp>
|
||||
#include <boost/mpl/map/aux_/insert_range_impl.hpp>
|
||||
#include <boost/mpl/map/aux_/erase_impl.hpp>
|
||||
#include <boost/mpl/map/aux_/erase_key_impl.hpp>
|
||||
#include <boost/mpl/map/aux_/has_key_impl.hpp>
|
||||
|
Reference in New Issue
Block a user