Как использовать типы std :: tuple с алгоритмами boost :: mpl?

Алгоритмы boost :: mpl , похоже, не могут работать с типами std :: tuple из коробки, например, следующее не работает compile (boost-1.46.0, снимок g ++ 2011-02-19):

#include 
#include 
#include 

namespace mpl=boost::mpl;

typedef mpl::vector types;
static_assert(mpl::contains::value, "vector contains bool");

typedef std::tuple types2;
// the following does not compile:
// error: no class template named ‘apply’ in ‘struct boost::mpl::contains_impl’
static_assert(mpl::contains::value, "tuple contains bool");

Самый простой способ заставить алгоритмы boost :: mpl работать на std :: tuple ?

  • Есть ли evtl. boost :: fusion предоставляет эту функциональность (как и для boost :: tuple )?
  • Если нет, можно ли будет перенести реализацию объединения для ] boost :: tuple в std :: tuple легко?
  • Если нет, мне действительно нужно реализовать все встроенные метафункции, перечисленные в документации MPL или каких будет достаточно? (В документах только сказано " Затемнить элемент как новый ToolStripMenuItem (...

    Я динамически добавляю строки (элементы) в ToolStripItemCollection с помощью:

    Dim onClickHandler As System.EventHandler = New System.EventHandler(AddressOf Symbol_Click)
    Dim item As New ToolStripMenuItem(newSymbol, Nothing, onClickHandler)
    SomeToolStripMenuItem.DropDownItems.Add(item)
    

    Таким образом, элементы добавляются не за один раз, а один за другим на основе внешних триггеров по всей программе сеанс. Я хотел бы сортировать раскрывающийся список каждый раз, когда добавляю новый элемент. Каковы мои варианты достижения этого?

6
задан bretddog 24 February 2011 в 10:59
поделиться