clang\test\CXX\temp\temp.param\p14.cpp
Aaron Ballman
aaron at aaronballman.com
Fri May 30 06:25:06 PDT 2014
Thanks! Committed in r209892
~Aaron
On Thu, May 29, 2014 at 10:56 PM, Richard Smith <richard at metafoo.co.uk> wrote:
> On Tue, May 27, 2014 at 7:26 AM, Aaron Ballman <aaron at aaronballman.com>
> wrote:
>>
>> This test is currently XFAILed, without any real explanation as to
>> why. When I compile the test, I get:
>>
>> E:\llvm\2013>clang -fsyntax-only
>> E:\llvm\llvm\tools\clang\test\CXX\temp\temp.par
>> am\p14.cpp
>> E:\llvm\llvm\tools\clang\test\CXX\temp\temp.param\p14.cpp:5:32: error: use
>> of
>> undeclared identifier 'T'
>> template<typename T = typename T::type> struct X; //
>> expected-error{{default}}
>> ^
>> E:\llvm\llvm\tools\clang\test\CXX\temp\temp.param\p14.cpp:5:35: error:
>> expected
>> a qualified name after 'typename'
>> template<typename T = typename T::type> struct X; //
>> expected-error{{default}}
>> ^
>> E:\llvm\llvm\tools\clang\test\CXX\temp\temp.param\p14.cpp:5:35: error:
>> type-id
>> cannot have a name
>> template<typename T = typename T::type> struct X; //
>> expected-error{{default}}
>> ^~~~
>> 3 errors generated.
>>
>> So the test fails to compile, as expected. The error message is fairly
>> reasonable. Is this XFAILed because of QoI? Or would it make sense to
>> un-XFAIL this test with the appropriate changes?
>
>
> The test is reasonable, but it shouldn't be in temp.param any more. The
> relevant rule is [basic.scope.pdecl]p10. We already have relevant -- and
> more thorough -- tests there (although they're in p9.cpp). I'd say just
> delete this file.
>
>>
>> By comparison, gcc emits:
>>
>> prog.cpp:1:32: error: âTâ has not been declared
>> template<typename T = typename T::type> struct X; //
>> expected-error{{default}}
>>
>> And MSVC requires a bit more coaxing (you have to actually instantiate
>> the struct to get the diagnostic), but eventually emits: error C2079:
>> 'x' uses undefined struct 'X<Test>'
>>
>> ~Aaron
>
>
More information about the cfe-commits
mailing list