Назначение enum максимального значения через numeric_limits?

У меня проблемы с назначением элемента в 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 и т. Д.

0

Решение

В C ++ 03 std::numeric_limits<T>::max() было просто static, В C ++ 11 это стало static constexpr, Последнее необходимо для использования в выражении с интегральной константой, поэтому просто -std=c++11 Сделаю.

Если вы не можете использовать C ++ 11, вы можете просто использовать UINT_MAX.

3

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


По вопросам рекламы [email protected]