【发布时间】:2018-06-07 01:17:19
【问题描述】:
尝试构造一个简单的枚举来包含一组 ios:: 标志以便于引用、参数传递等。我希望能够进行调用:
resultCode = DoSomething(param, TRUNCATE);
ResultCode DoSomething(int param, FileOperation_t operation) {...}
我已经这样定义了我的枚举:
typedef enum {
TRUNCATE = std::ios::out | std::ios::trunc,
APPEND = std::ios::out | std::ios::app
} FileOperation_t;
编译结果:
error: calls to overloaded operators cannot appear in a constant-expression
TRUNCATE = std::ios::out | std::ios::trunc,
^
我不明白这个错误是什么意思。我在这里做错了什么,我该如何完成我想做的事情?
gcc (GCC) 4.8.5 20150623(红帽 4.8.5-28)
【问题讨论】:
-
你使用的是什么编译器/版本?
-
@NathanOliver 在 gcc 上转载到版本 5.5,从 6.1 开始很好
-
标准说值的类型是实现定义的,你确定是整数吗?