
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