[Repro](https://godbolt.org/z/fM8rdcG4d):
```
struct Outer
{
template<class = void>
static void foo()
{
struct S
{
};
auto const g = []()
{
struct H
{
static void f()
{
typedef S S; // error: unknown type name 'S'
}
};
};
}
};
int main()
{
Outer().foo();
}
```
Both Clang and MSVC compile this fine with eager template parsing, but clang-cl fails to compile it due to delayed template parsing.
This makes clang-cl incompatible with MSVC.
Note that MSVC always handles this fine, regardless of `/permissive[-]` or `/Zc:twoPhase[-]`.
Repro:
Both Clang and MSVC compile this fine with eager template parsing, but clang-cl fails to compile it due to delayed template parsing.
This makes clang-cl incompatible with MSVC.
Note that MSVC always handles this fine, regardless of
/permissive[-]
or/Zc:twoPhase[-]
.