【发布时间】:2019-05-04 00:55:02
【问题描述】:
说我有
[[nodiscard]] int foo ()
{
return 0;
}
int main ()
{
foo ();
}
然后
error: ignoring return value of ‘int foo()’, declared with attribute nodiscard [-Werror=unused-result]
但是如果
int x = foo ();
然后
error: unused variable ‘x’ [-Werror=unused-variable]
有没有一种简洁的方式告诉编译器“我想丢弃这个[[nodiscard]] 值”?
【问题讨论】:
-
对不起,如果我多管闲事,但是为什么你想丢弃这个值?如果运行代码并丢弃值是有意义的,那么函数不应该是
[[nodiscard]],对吧?我可以想出两个理由来调用[[nodiscard]]函数来解决副作用、单元测试和缓存预热。不过,在 UT 情况下,您通常希望将返回值与一些预期结果进行比较。 -
在我的特定情况下,列表容器擦除方法将迭代器返回到后续列表节点,但调用函数已经知道后续节点迭代器。