У меня проблемы с назначением элемента в enum
максимальное значение. Первый:
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
дать мне значение, которое я могу использовать во время компиляции для enum
?
Библиотека старше, поэтому она поддерживает множество старых компиляторов и IDE. Мне нужно что-то, по крайней мере, C ++ 03 и предпочтительно C ++ 98.
Применяются стандартные предостережения: это простой проект на основе марки. Он не использует Autotools, не использует Cmake, не использует Boost и т. Д.
В C ++ 03 std::numeric_limits<T>::max()
было просто static
, В C ++ 11 это стало static constexpr
, Последнее необходимо для использования в выражении с интегральной константой, поэтому просто -std=c++11
Сделаю.
Если вы не можете использовать C ++ 11, вы можете просто использовать UINT_MAX
.