- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
说我有
[[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]] int foo ()
{
return 0;
}
int main ()
{
static_cast<void>(foo());
}
这基本上告诉编译器“是的,我知道我正在丢弃它,是的,我很确定。”
关于c++ - 如何故意丢弃 [[nodiscard]] 返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53581744/
C++17 在 p0189r1 中引入了新属性 [[nodiscard]] .当一个函数被这个属性修饰时,返回类型不能被丢弃。如果它被丢弃,则会发出警告。 例子: [[nodiscard]] void
C++17 有一个新属性,[[nodiscard]]。 假设我有一个 Result 结构,它有这个属性: struct [[nodiscard]] Result { }; 现在,如果我调用返回 Res
我想使用第三方函数,它通过充满函数指针的结构提供其 API。例如: struct S { using p_func1 = int(*)(int, int); p_func1 func1
我有一个函数对象,它是另一个函数的包装器: template class Wrapper { private: FuncT funcToWrap; public:
从 C++20 开始,[[nodiscard]]可以应用于构造函数。 http://wg21.link/p1771有例子: struct [[nodiscard]] my_scopeguard { /
在哪些用例中使用 [[nodiscard]] 有益类型? 关于类型,[[nodiscard]]如果任何返回该类型实例的函数的返回值被省略,则发出警告; (引自 p0068r0): If [[nodis
我正在尝试测试一些 C++17。我正在尝试: [[nodiscard]] int get_value1() { return 42; } inline void start() { /
C++17 标准中引入的 [[nodiscard]] 属性,如果是 ... potentially-evaluated discarded-value expression,..., implemen
应用于函数时,[[nodiscard]]属性鼓励编译器在被丢弃的表达式中使用而不是强制转换为 void 时发出警告。示例: [[nodiscard]] int callable_return_not_
说我有 [[nodiscard]] int foo () { return 0; } int main () { foo (); } 然后 error: ignoring return
在 C++ 中,我们可以使用“[[nodiscard]]”来装饰我们的返回类型,如果结果未使用,则会触发编译器警告。 这对于强制执行错误代码特别有用 auto dont_forget_to_check
由于 this问题和答案,属性是否被继承并不是 100% 清楚,但可能不是,因为它没有在标准中说明。这就是为什么如果我们只有标记为 nodiscard 的声明在基类中,并使用 Clang 编译,如果我
我想防止人们在不处理返回值的情况下调用 lambda。 Clang 4.0 拒绝我尝试过的一切,使用 -std=c++1z 进行编译: auto x = [&] [[nodiscard]] () {
我有一个 C++ 项目,其中 clang-tidy建议添加[[nodiscard]]到处。这是一个好习惯吗?我的理解是[[nodiscard]]仅当忽略返回值对程序可能是致命的时才应使用。我有一个对象
我想知道是否有办法拥有这样的东西: using CallbackType = std::function; (我知道上面的代码不会被编译并提示 nodiscard 不能应用于类型!) 我的目标是强制回
您可以使用 [[nodiscard]] 属性声明一个类。当您从此类的语义中知道无论何时从函数返回它都必须用于某些事情时,它可能很有用。我有这种情况,用 [[nodiscard]] 标记类而不是返回它的
C++17 已添加 [[nodiscard]] . C++20 添加了 [[nodiscard]] 的使用在 empty方法,例如 vector::empty() -- 可能是为了避免用户混淆 cle
我有一个标有 C++17 的 [[nodiscard]] 的结构属性。它是这样定义的: struct [[nodiscard]] MyObject final { explicit MyObj
我需要非 C++17 代码库中 [[nodiscard]] 属性的语义。我想在 C++17 之前有依赖于编译器的方法可以实现这一点。有谁知道这些?我对 clang、gcc 和 MSVC 感兴趣。 最佳
最近发布了 Visual Studio 2019 的 16.9.5 版本。它显然引入了新的警告: [[nodiscard]] __declspec(dllexport) bool foo(); //o
我是一名优秀的程序员,十分优秀!