c++ - 使用std::addressof(std::cout)而不是&std::cout有什么风险吗?

标签 c++ c++11 sonarqube c++14

我正在使用std::cout进行日志记录,并且当“请勿使用'cout'的地址,而是从lambda调用它的地址“时,sonarqube报告错误。

std::ostream *streamp;
streamp = &std::cout;

当我使用下面的代码时,在声纳贝中没有观察到错误。在std::addressof函数上使用std::cout安全吗?
std::ostream *streamp;
streamp = std::addressof(std::cout);

最佳答案

是的,在addressof上使用std::cout是安全的。但是,由于在&上使用std::cout同样安全,因此,这样做的唯一原因是使一个显然给您假阳性的工具安静(它没有意识到addressof在做什么)。

最好使用&并使用该工具中存在的任何机制来关闭误报。

关于c++ - 使用std::addressof(std::cout)而不是&std::cout有什么风险吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62075074/

相关文章:

docker - 如何在Docker中复制文件?

c++ - 我试图将 float 四舍五入到小数点后两位,但这是不正确的。如何在 C++ 中修复此舍入错误?

c++ - 模板派生类的访问者模式

c++ - OpenMP:同时写入 std::map

qt - 通过 lambda 连接 QPushButton

docker - 如何更新基于 docker 的安装的 soanr.properties

c++ - 是否有必要在构造函数初始化列表中调用默认构造函数?

c++ - Vista 操作系统中找不到入口点错误

c++ - 无法将类型的非常量左值引用绑定(bind)到类型的右值

c# - "async"/"await"方法中的参数验证应该被包装