У меня возникли проблемы с назначением элемента в enum
максимальным значением. Первый:Назначение перечисления максимального значения через numeric_limits?
protected:
enum {DEFAULT_PADDING=std::numeric_limits<enum>::max()};
Результаты в:
./basecode.h:30:51: error: expected identifier or '{'
enum {DEFAULT_PADDING=std::numeric_limits<enum>::max()};
^
./basecode.h:30:59: error: expected a type
enum {DEFAULT_PADDING=std::numeric_limits<enum>::max()};
(and a couple of others)
Во-вторых, переключение на:
protected:
enum {DEFAULT_PADDING=std::numeric_limits<unsigned int>::max()};
Результаты в:
./basecode.h:30:27: error: expression is not an integral constant expression
enum {DEFAULT_PADDING=std::numeric_limits<unsigned int>::max()};
Как есть numeric_limits
дать мне значение что я могу использовать при компиляции t ime для enum
?
Библиотека старше, поэтому она поддерживает множество старых компиляторов и IDE. Мне нужно что-то, что по крайней мере C++ 03 и желательно C++ 98.
И стандартные оговорки применяются: это простой проект на основе макета. Он не использует Autotools, он не использует Cmake, он не использует Boost и т. Д.
Вы компилируете с помощью '-std = C++ 11'? – Barry
'numeric_limits :: max' объявляется как' static', тогда как перечисления требуют констант. –
@ Джонатан - Я был бы удивлен, если бы он не был постоянным. Вы говорите, что это может как-то измениться во время выполнения? – jww