Информация об изменениях

Сообщение Re: Оказывается, это N3916 и есть в бусте 1.60 от 18.12.2015 18:12

Изменено 18.12.2015 18:13 Alexander G

Оказывается, то, что мне нужно — N3916, и оно появилось в бусте 1.60
Автор: flаt
Дата: 18.12.15
.

Называется Polymorphic Memory Resources.

Адаптер polymorphic_allocator позволяет вообще не типизировать аллокатор и назначать его в рантайме.

После чего в неймспейсе boost::pmr (std::pmr для N3916) есть тайпдефы с заданным аллокатором

Конкретно для мап:

http://www.boost.org/doc/libs/1_60_0/doc/html/boost_container_header_reference.html#header.boost.container.pmr.resource_adaptor_hpp

Header <boost/container/pmr/map.hpp>

namespace boost {
  namespace container {
    namespace pmr {
      template<typename Key, typename T, typename Compare = std::less<Key>, 
               typename Options = tree_assoc_defaults> 
        struct map_of;
      template<typename Key, typename T, typename Compare = std::less<Key>, 
               typename Options = tree_assoc_defaults> 
        struct multimap_of;


      typedef boost::container::map< Key, T, Compare, polymorphic_allocator< std::pair< const Key, T > >, Options > map;
      typedef boost::container::multimap< Key, T, Compare, polymorphic_allocator< std::pair< const Key, T > >, Options > multimap;
    }
  }
}

(структуры map_of и multimap_of содержат typedef type, ну то есть это "using для бедных")
Re: Оказывается, это N3916 и есть в бусте 1.60
Оказывается, то, что мне нужно — N3916, и оно появилось в бусте 1.60
Автор: flаt
Дата: 18.12.15
.

Называется Polymorphic Memory Resources.

Адаптер polymorphic_allocator позволяет вообще не типизировать аллокатор и назначать его в рантайме.

После чего в неймспейсе boost::pmr (std::pmr для N3916) есть тайпдефы с заданным аллокатором

Конкретно для мап:

http://www.boost.org/doc/libs/1_60_0/doc/html/boost_container_header_reference.html#header.boost.container.pmr.map_hpp

Header <boost/container/pmr/map.hpp>

namespace boost {
  namespace container {
    namespace pmr {
      template<typename Key, typename T, typename Compare = std::less<Key>, 
               typename Options = tree_assoc_defaults> 
        struct map_of;
      template<typename Key, typename T, typename Compare = std::less<Key>, 
               typename Options = tree_assoc_defaults> 
        struct multimap_of;


      typedef boost::container::map< Key, T, Compare, polymorphic_allocator< std::pair< const Key, T > >, Options > map;
      typedef boost::container::multimap< Key, T, Compare, polymorphic_allocator< std::pair< const Key, T > >, Options > multimap;
    }
  }
}

(структуры map_of и multimap_of содержат typedef type, ну то есть это "using для бедных")