|
Boost : |
Subject: [boost] [multi_index] Taking advantage of C++17 auto template params to simplify key specification
From: Joaquin M López Muñoz (joaquinlopezmunoz_at_[hidden])
Date: 2017-09-27 10:53:51
Consider the following:
 struct element
 {
  int x;
   int f()const{return x;}
 };
 int gf(const element& e){return e.x;}
 using container=multi_index_container<
   element,
   indexed_by<
ordered_unique<member<element,int,&element::x>>,
ordered_unique<const_mem_fun<element,int,&element::f>>,
     ordered_unique<global_fun<const element&,int,&gf>>
   >
 >;
With the advent in C++17 of auto non-type template parameters, it is
very easy to
provide a boost::multi_index::key class template so that we can write:
 using container=multi_index_container<
   element,
   indexed_by<
     ordered_unique<key<&element::x>>,
     ordered_unique<key<&element::f>>,
     ordered_unique<key<&gf>>
   >
 >;
(Example at http://coliru.stacked-crooked.com/a/5742c768cc093c03 ).
Is there interest in adding this to Boost.MultiIndex? Comments on this or
alternative syntaxes?
Thank you,
JoaquÃn M López Muñoz
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk