BVB Source Codes

mars Show remove_if.hpp Source code

Return Download mars: download remove_if.hpp Source code - Download mars Source code - Type:.hpp
  1.  
  2. #ifndef BOOST_MPL_REMOVE_IF_HPP_INCLUDED
  3. #define BOOST_MPL_REMOVE_IF_HPP_INCLUDED
  4.  
  5. // Copyright Aleksey Gurtovoy 2000-2004
  6. // Copyright David Abrahams 2003-2004
  7. //
  8. // Distributed under the Boost Software License, Version 1.0.
  9. // (See accompanying file LICENSE_1_0.txt or copy at
  10. // http://www.boost.org/LICENSE_1_0.txt)
  11. //
  12. // See http://www.boost.org/libs/mpl for documentation.
  13.  
  14. // $Id$
  15. // $Date$
  16. // $Revision$
  17.  
  18. #include <boost/mpl/fold.hpp>
  19. #include <boost/mpl/reverse_fold.hpp>
  20. #include <boost/mpl/eval_if.hpp>
  21. #include <boost/mpl/identity.hpp>
  22. #include <boost/mpl/protect.hpp>
  23. #include <boost/mpl/lambda.hpp>
  24. #include <boost/mpl/apply.hpp>
  25. #include <boost/mpl/aux_/inserter_algorithm.hpp>
  26.  
  27. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost { namespace mpl {
  28.  
  29. namespace aux {
  30.  
  31. template< typename Pred, typename InsertOp > struct remove_if_helper
  32. {
  33.     template< typename Sequence, typename U > struct apply
  34.     {
  35.         typedef typename eval_if<
  36.               typename apply1<Pred,U>::type
  37.             , identity<Sequence>
  38.             , apply2<InsertOp,Sequence,U>
  39.             >::type type;
  40.     };
  41. };
  42.  
  43. template<
  44.       typename Sequence
  45.     , typename Predicate
  46.     , typename Inserter
  47.     >
  48. struct remove_if_impl
  49.     : fold<
  50.           Sequence
  51.         , typename Inserter::state
  52.         , protect< aux::remove_if_helper<
  53.               typename lambda<Predicate>::type
  54.             , typename Inserter::operation
  55.             > >
  56.         >
  57. {
  58. };
  59.  
  60. template<
  61.       typename Sequence
  62.     , typename Predicate
  63.     , typename Inserter
  64.     >
  65. struct reverse_remove_if_impl
  66.     : reverse_fold<
  67.           Sequence
  68.         , typename Inserter::state
  69.         , protect< aux::remove_if_helper<
  70.               typename lambda<Predicate>::type
  71.             , typename Inserter::operation
  72.             > >
  73.         >
  74. {
  75. };
  76.  
  77. } // namespace aux
  78.  
  79. BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(3, remove_if)
  80.  
  81. }}
  82.  
  83. #endif // BOOST_MPL_REMOVE_IF_HPP_INCLUDED
  84.  
downloadremove_if.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top