草庐IT

nodiscard

全部标签

c++ - [[nodiscard]] 到一个函数指针

我想使用第三方函数,它通过充满函数指针的结构提供其API。例如:structS{usingp_func1=int(*)(int,int);p_func1func1;usingp_func2=int(*)(char*);p_func2func2;}第三方库初始化这个结构。需要检查这些函数(func1、func2)的返回值,我希望我能以某种方式显示在[[discard]]属性上以确保检查返回值。有没有办法做到这一点,同时保持结构的ABI?编辑:到目前为止,我能想到的最好的办法就是拥有另一个结构,如下所示:structS_wrap{Sorig;[[nodiscard]]intfunc1(in

c++ - 模板忽略 [[nodiscard]] 属性

应用于函数时,[[nodiscard]]属性鼓励编译器在被丢弃的表达式中使用而不是强制转换为void时发出警告。示例:[[nodiscard]]intcallable_return_not_discardable(intn){returnn;}intmain(){callable_return_not_discardable(0);//warning/error://ignoringreturnvalueof'intcallable_return_not_discardable(int)',//declaredwithattributenodiscard[-Wunused-result

UE4源码编译报错C4834 放弃具有 “nodiscard“ 属性的函数的返回值

版本:UE4.27.2VS2022解决方案:使用警告杂注 #pragmawarning(disable:4834) 关闭文件中的警告。找到报错文件位置,在报错文件代码头写入#pragmawarning(disable:4834)|

c++ - 如何故意丢弃 [[nodiscard]] 返回值?

说我有[[nodiscard]]intfoo(){return0;}intmain(){foo();}然后error:ignoringreturnvalueof‘intfoo()’,declaredwithattributenodiscard[-Werror=unused-result]但是如果intx=foo();然后error:unusedvariable‘x’[-Werror=unused-variable]有没有一种简洁的方式告诉编译器“我想丢弃这个[[nodiscard]]值”? 最佳答案 Castittovoid:[[n

c++ - 如何故意丢弃 [[nodiscard]] 返回值?

说我有[[nodiscard]]intfoo(){return0;}intmain(){foo();}然后error:ignoringreturnvalueof‘intfoo()’,declaredwithattributenodiscard[-Werror=unused-result]但是如果intx=foo();然后error:unusedvariable‘x’[-Werror=unused-variable]有没有一种简洁的方式告诉编译器“我想丢弃这个[[nodiscard]]值”? 最佳答案 Castittovoid:[[n

c++ - 属性说明符序列是否继承?

看看这个片段:struct[[nodiscard]]Result{};structDiscardableResult:Result{};DiscardableResult是否有[[nodiscard]]属性?如果是,是否有可能以某种方式将其删除? 最佳答案 [dcl.attr.nodiscard]/2说:Anodiscardcallisafunctioncallexpressionthatcallsafunctionpreviouslydeclarednodiscard,orwhosereturntypeisapossiblycv-

c++ - 属性说明符序列是否继承?

看看这个片段:struct[[nodiscard]]Result{};structDiscardableResult:Result{};DiscardableResult是否有[[nodiscard]]属性?如果是,是否有可能以某种方式将其删除? 最佳答案 [dcl.attr.nodiscard]/2说:Anodiscardcallisafunctioncallexpressionthatcallsafunctionpreviouslydeclarednodiscard,orwhosereturntypeisapossiblycv-

c++ - 模板参数依赖 [[nodiscard]]

我有一个函数对象,它是另一个函数的包装器:templateclassWrapper{private:FuncTfuncToWrap;public:Wrapper(FuncTftw):funcToWrap(ftw){};templatetypenamestd::result_of::typeoperator()(ARG&&...args){returnfuncToWrap(std::forward(args)...);}};intmain(){std::functiontestfunc=[](){std::couttest{testfunc};test();}我想做的是标记operato

c++ - 在 C++17 之前指定 [[nodiscard]] 的方法

我需要非C++17代码库中[[nodiscard]]属性的语义。我想在C++17之前有依赖于编译器的方法可以实现这一点。有谁知道这些?我对clang、gcc和MSVC感兴趣。 最佳答案 GCC/Clang:__attribute__((warn_unused_result))MSVC:_Check_return__MSC_VER>=1700(VisualStudio2012) 关于c++-在C++17之前指定[[nodiscard]]的方法,我们在StackOverflow上找到一个类似

c++ - 如何将 [[nodiscard]] 属性应用于 lambda?

我想防止人们在不处理返回值的情况下调用lambda。Clang4.0拒绝我尝试过的一切,使用-std=c++1z进行编译:autox=[&][[nodiscard]](){return1;};//error:nodiscardattributecannotbeappliedtotypesautox=[[nodiscard]][&](){return1;};//error:expectedvariablenameor'this'inlambdacapturelistautox[[nodiscard]]=[&](){return1;};//warning:nodiscardattribut
12