MSVC expects std::initializer_list to have a publicly accessible constructor taking the begin and end pointers.
The existing tests will do fine, the problem is that the test wont just run with libc++ as is. I had to make a number of changes and add workarounds to get it to work with MSVC, as well as hacked lit.cfg to just work. I'm not sure how to proceed with these changes.
Regarding my "private" comment: I checked with MS, and the answer is "no". Even thought this is only called by compiler-generated code, the compiler still pays attention to the access permissions.
This is, of course, fixable in their compiler, and I will enter a DR for this vs MSVC. But that doesn't help us today.