我在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 :(得分:3)
在C ++ 03中,std::numeric_limits<T>::max()
只是static
。在C ++ 11中,它变为static constexpr
。您需要后者才能在整数常量表达式中使用,因此只需使用-std=c++11
进行编译即可。
如果您不能使用C ++ 11,则可以使用UINT_MAX
。