最佳实践:[[maybe_unused]] 还是匿名参数?

Jea*_*Dax 2 c++ c++14 c++17

假设我有一个类,其中有一个带有一个参数的虚函数和该虚函数的两个不同实现。第一个实现使用该参数,而第二个实现则不使用该参数。第二种情况会产生编译警告。我可以想到两种方法来抑制警告。

  1. 使用匿名参数。
  2. 使用[[maybe_unused]]注释。

两者之间什么被认为是“最佳实践”?

预先感谢您的回答。

Sil*_*olo 9

我们拥有的 C++“最佳实践”最权威的来源是C++ 核心指南。关于未使用的参数,他们有这样的说法

F.9:未使用的参数应未命名

...

如果有条件地不使用参数,请使用[[maybe_unused]]属性声明它们。

因此,C++ 核心指南建议如果从未使用过参数,则不要命名该参数。[[maybe_unused]]根据此规则,仅应在某些情况下未使用该参数时应用,例如在#ifdef或(更现代的)内部if constexpr