Как перечислить BOOST_ENUM с BOOST_FOREACH? - PullRequest
0 голосов
/ 31 октября 2010

Может кто-нибудь объяснить, как перечислить BOOST_ENUM, используя BOOST_FOREACH?Пример ниже показывает, что я получил его для работы с std :: for_each, но не с BOOST_FOREACH.

Пример кода:

BOOST_ENUM_VALUES(  MyEnum, 
  const char *, 
      (xMin)("xMin")
      (xMax)("xMax")
      (yMin)("yMin")
      (yMax)("yMax")
);

void blah(const MyEnum & val)  // working demo with std_foreach
{
  std::cout << "index=" << val.index() << " val=" << val.value() << " str=" << val.str() << std::endl;
}


void foo()
{
  //BOOST_FOREACH : does not compile...
  BOOST_FOREACH(MyEnum myEnum, MyEnum() ) // I tried to construct a "dummy" enum in order to use its iterator with no luck...
  {
    std::cout << "index=" << myEnum.index() << " val=" << myEnum.value() << " str=" << myEnum.str() << std::endl;
  }

  //std::for_each : works...
  std::for_each(MyEnum::begin(), MyEnum::end(), blah);

}

Заранее большое спасибо!

Изменить: как уже упоминалось в ответе, код работает с новейшей кодовой базой Boost.

1 Ответ

1 голос
/ 31 октября 2010

Ваш пример кода выше компилируется и прекрасно работает для меня с gcc 4.5.1 и vc2010 (то есть после добавления соответствующих # include).Я пытался с enum_rev4.6 из хранилища.Какие ошибки компиляции вы видите?

...