禁用MSVC警告C4482是否安全?
Is it safe to disable MSVC warning C4482?
虽然用枚举的名称限定枚举值是无效的c++ 03,但据我所知,它是有效的c++ 11。尽管如此,MSVC 10还是会为以下内容生成警告C4482:
enum E { A, B };
int i = E::A; // warning C4482 (but valid C++11?)
由于我们的大部分代码使用了c++ 11的特性(尤其是lambdas),因此禁用此警告似乎是安全的。我是对的,代码是有效的c++ 11?
注意:问题中的代码不是我写的,我不希望每出现一次都修改一次。
编辑:添加相关链接
- MSDN页面的警告。
- 另一个关于警告的问题。问题和答案似乎都参考了c++ 03。
由于我们的大部分代码使用了c++ 11的特性(尤其是lambdas),因此禁用此警告似乎是安全的。
如果你已经在依赖c++ 11的特性,那么可以。c++ 11允许使用由枚举名称限定范围的常规枚举。微软把它作为一个扩展已经有一段时间了,所以他们发布了一个关于非标准行为的警告。
所以你可以禁用它。
请注意,像VC2010这样的旧编译器,而不是警告,确实会引发编译错误C2653
(带有消息"…
相关文章:
- 通过网络、跨平台传递std::变体是否安全
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 跨 DLL 边界访问虚拟方法是否安全/可能?
- 静态 constexpr 类成员变量对多线程读取是否安全?
- 在函数结束后使用指向变量的指针是否安全?
- 逐字节删除 void* 是否安全?
- 在 RAII 构造中修改 RVO 值是否安全?
- 线程调用的函数对对象删除是否安全?
- 将对象的字节复制到数组并再次复制回来是否安全
- std::memmove在同一对象之间是否始终安全
- 使用枚举为数组编制索引是否安全?
- 返回从字符串文本创建的静态string_view是否安全?
- 在cstlib中将#include_next替换为#include是否安全
- 由并发无序映射查找线程调用的函数是否安全?
- 使用 c++ 原子时编写"y=++x"是否安全?
- 从另一个线程发出信号是否安全?
- 从其存储的回调中删除 std::函数是否安全
- 使用 std::vector::swap 方法在C++中交换两个不同的向量是否安全?
- 当我在C++中调用 struce 的只读静态成员时,线程是否安全
- 同时调用 ASIO 对象的 API 是否安全?