不,编译器不应该忽略缺失typename的依赖类型,即使在C++20标准下。缺失typename会导致编译器无法正确解析代码,并且可能会导致编译错误。
以下是一个示例代码,其中缺少typename导致编译错误:
template
struct A { typedef int type; };
int main() { MyStruct s; s.value = 42; return 0; }
在此示例中,MyStruct中的typedef需要typename来标识T::type是一个类型名,但是缺少typename会导致编译错误。因此,在编写包含依赖类型的代码时,必须始终使用typename来标识类型。
下一篇:编译器能证明定理吗?