Ошибки компиляции при попытке перегрузить оператор + = для перечисления

У меня возникли некоторые проблемы при попытке перегрузить оператор + = для перечисления, которое я определил в пространстве имен. Мне не нужно на самом деле использовать оператор, однако библиотека, которую я использую (boost :: icl), требует, чтобы оператор + = был определен для данных, которые я храню в карте интервалов. Всякий раз, когда я пытаюсь скомпилировать приведенный ниже код, я получаю следующую ошибку компилятора с использованием Intel C ++:

error : enum "test::events" has no member "operator+="

Какие-либо предложения?

test.h:

namespace test {

enum events {
SHUTIN = 0,
ACTIVE,
RECOMPLETE,
CTI,
RTP
};

events & events::operator+= (const events &rhs);

}; // end namespace test

test.cpp:

test::events & test::events::operator+= (const test::events &rhs) {
return *this;
}

1

Решение

Вы можете использовать бесплатную функцию:

events & operator+= (events &lhs, const events &rhs);

(протестировано с GCC 4.8, если Intel C ++ отклоняет его, я думаю, что это ошибка)

1

Другие решения

Других решений пока нет …