应该在 c++20 中抑制关于缺少类型名的警告吗?

Should warnings about missing typename supressed in c++20?

警告信息如:

missing 'typename' prior to dependent type name ... [-Wtypename-missing]

template argument for template type parameter must be a type; omitted 'typename' is a Microsoft extension [-Wmicrosoft-template]

如果我理解正确,c++20 放宽了对 typename 的需求。这是否意味着这些警告已过时?或者我应该在有警告时添加(烦人的)typename 吗? (我正在使用 Visual Studio / Clang12 / std=C++20。)

不,警告很有用。修复您的代码。

C++20 放宽了 typename 规则 一点点 。但这与此警告无关。

MSVC 认为 typename 是(几乎?)完全可选的,并且在这方面是 non-conforming。为了与 MSVC 兼容,Clang 显然也可以这样做。警告说您的代码是 non-conforming,可能不适用于其他编译器(尤其是 GCC)。