- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
C++17 标准中引入的 [[nodiscard]]
属性,如果是
... potentially-evaluated discarded-value expression,..., implementations are encouraged to issue a warning in such cases.
来源:n4659, C++17 final working draft .
在 cppreference 上使用了类似的措辞,如果出现“违规”:
the compiler is encouraged to issue a warning.
为什么使用鼓励而不是要求?是否存在编译器最好不发出警告的情况(除了显式转换为 void
)?在相对安全的要求发出警告的特殊情况下软化标准语言的背后原因是什么(再次,除了,比方说,显式转换为 void)?
最佳答案
C++ 标准规定了有效 C++ 程序的行为。这样做的同时,它还定义了“有效的 C++ 程序”的含义。
只有格式错误的代码、语法或语义不正确的代码才需要诊断(即便如此,也有一些格式错误的情况不需要诊断)。代码要么格式正确,要么格式错误,并且(通常)会显示诊断信息。
因此,“警告”这个概念并不是 C++ 标准所认可的,或者本应认可的。请注意,即使是“鼓励实现发出警告”的声明也是非规范的表示法,而不是合法的行为规范。
关于c++ - 为什么 [[nodiscard]] 只鼓励编译器发出警告而不要求它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57446901/
我认为允许在 Haskell 中进行任意链式比较会很好,因此您可以进行简单的范围检查,例如: x ), (>=), (==), (/=)) class Booly v a where truthy
(请注意,当我说“JVM”时,我的意思是“热点”,我正在运行最新的 Java 1.6 更新。) 示例情况: 我的 JVM 运行时 -Xmx 设置为 1gb。目前,堆分配了 500mb,其中 450mb
我试图利用 上的崩溃安全漏洞Ubuntu 16.04 ,带有未修补的 内核 4.8.0-36 在 英特尔酷睿-i5 4300M 中央处理器。 首先,我使用内核模块将 secret 数据存储在内核空间中
假设我想在 do 中 fork 一个线程-notation block ,但我不关心线程ID。如果我写 forkIO action GHC 发出警告 Warning: A do-notation st
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
我正在用 Java 探索一棵树,但我的内存有限。我通过查看占用统计数据来处理这个问题,当我超过 80%(比如说)时,停止分配树的新位以避免内存不足。只需使用我到目前为止所得到的 20% 净空进行计算即
我是一名优秀的程序员,十分优秀!