zircon-temporary-objects

警告 Zircon 内核中特定临时对象的构造。如果应该标记对象,如果应该标记对象,则必须显式地将完全限定的类型名称传递给检查。

例如,给定类列表“Foo”和“NS::Bar”,以下所有内容都将触发警告

Foo();
Foo F = Foo();
func(Foo());

namespace NS {

Bar();

}

使用相同的列表,以下不会触发警告

Foo F;                 // Non-temporary construction okay
Foo F(param);          // Non-temporary construction okay
Foo *F = new Foo();    // New construction okay

Bar();                 // Not NS::Bar, so okay
NS::Bar B;             // Non-temporary construction okay

请注意,必须显式指定对象才能进行标记,因此继承指定对象的子类不会被标记。

此检查匹配临时对象,而与继承无关,因此禁止的基类类型不会同样禁止派生类类型。

class Derived : Foo {} // Derived is not explicitly disallowed
Derived();             // and so temporary construction is okay

选项

Names

以分号分隔的 C++ 类完全限定名称列表,这些名称不应该作为临时对象进行构造。默认值为为空。