如何抑制函数参数的弃用警告?

How do I suppress deprecation warnings for function parameters?

我以前使用过这样的 pragma,我记得它在 GCC (ubuntu) 和 clang (macos) 上都有效。它们似乎可以有效地抑制来自 header #includes.

的警告
// test.cpp
struct [[deprecated]] Foo {};

#pragma clang push
#pragma clang ignored "-Wdeprecated-declarations"

int main() {
  auto foo_fun = [](const Foo &f) {};
  foo_fun(Foo());
}
#pragma clang pop

但是,当使用 clang -std=c++14 -o wat test.cpp 编译时,当弃用类型作为 lambda 或普通函数参数出现时,它似乎不起作用。编译器版本为Apple clang version 12.0.0 (clang-1200.0.32.29)

在这些情况下,我该怎么做才能抑制弃用警告?

您的 pragma 声明中缺少 diagnostic 关键字:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"

...

#pragma clang diagnostic pop