У меня есть класс, который принимает список классов политик, используя boost :: mpl. Каждый класс политики содержит идентификационный тег. Я бы хотел, чтобы MyClass создавал OR-ed результат каждого идентификационного тега класса политики. К сожалению, у меня возникли проблемы с тем, как правильно использовать функцию boost :: mpl :: fold <>. Если кто-нибудь может помочь, я был бы признателен.using boost :: mpl :: bitor_
#include <boost/mpl/vector.hpp>
#include <boost/mpl/bitor.hpp>
#include <boost/mpl/inherit.hpp>
#include <boost/mpl/inherit_linearly.hpp>
namespace bmpl = boost::mpl;
template< class ListOfPolicies >
class CMyClass : public bmpl::inherit_linearly< ListOfPolicies, bmpl::inherit< bmpl::_1, bmpl::_2 > >::type
{
public:
int identifier() const
{
// error C2039: 'tag' : is not a member of 'PolicyA'
return bmpl::fold< ListOfPolicies, bmpl::int_<0>, bmpl::bitor_< bmpl::_1, bmpl::_2 > >::value
}
};
template< class T >
class PolicyA
{
public:
enum { MY_IDENTIFIER = 0x00000001 };
};
class PolicyB
{
public:
enum { MY_IDENTIFIER = 0x00000010 };
};
int _tmain(int argc, _TCHAR* argv[])
{
CMyClass< PolicyA, PolicyAB > AB
assert(AB.identifier() == (PolicyA::MY_IDENTIFIER | PolicyB::MY_IDENTIFIER));
return 0;
}
Спасибо, PaulH
Я понимаю сейчас. Спасибо за вашу помощь. – PaulH