У меня есть класс перечислимую, что я хотел бы использовать в своих модульных тестов:Используйте классы перечислений с усилением Test
enum class MyEnumClass
{
MyEntryA,
MyEntryB
};
Я хотел бы использовать его следующим образом:
MyEnumClass myEnumValue = MyEnumClass::MyEntryA;
BOOST_CHECK_EQUAL(myEnumValue, MyEnumClass::MyEntryB);
Но я получить эту ошибку, очевидно, потому, что тест подталкивание пытается вывести значение:
include/boost/test/test_tools.hpp:326:14: error: cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'
ostr << t; // by default print the value
^
Добавление уродливые static_cast
«решает» проблема:
BOOST_CHECK_EQUAL(static_cast<int>(myEnumValue), static_cast<int>(MyEnumClass::MyEntryB));
Но я бы хотел избежать этого для каждого класса enum. Я также хотел бы избежать определения операторов потока <<
для каждого класса enum.
Есть ли более простой способ использования классов перечисления с испытанием на повышение?
Или у других модулей тестирования модулей есть лучший способ справиться с классами enum?
Возможный дубликат [Как я могу вывести значение класса enum в C++ 11] (http://stackoverflow.com/questions/11421432/how-can-i-output-the-value-of- ан-перечисление класса-в-c11) –