为什么Clang会警告未使用的指针和未使用的原语,而不是未使用的对象?

Dov*_*iin 3 c++ clang

在此代码段中...

sf::Time obj;
sf::Time* ptr;
int i;
int* p2;
Run Code Online (Sandbox Code Playgroud)

第一行不会产生警告,但其他三行都会产生警告.怎么会?

(顺便说一句,这是一个完整的方法.变量没有做任何事.)

Pet*_*all 6

对象可以有构造函数和析构函数.因此,虽然您可能没有使用实际变量,但您可能依赖于在构造函数或析构函数中运行的代码.

一个很好的例子是std::lock_guard,当锁超出范围时,利用析构函数来解锁互斥锁.