C++17[[nodiscard]]
在p0189r1中引入了新属性。当使用此属性修饰函数时,不得丢弃返回类型。如果它被丢弃,则会发出警告。
例子:
[[nodiscard]] void* allocateMemory();
void doWork() {
allocateMemory(); // Warning is emitted, because the value is not stored in a variable and thus is discarded
}
对于任何返回任何以后必须再次释放/销毁/删除/...的函数来说,这似乎是一个很好的补充。然而,标准并没有改变全局 new 操作符的定义来使用这个新的注解。这有什么好的理由吗?