[cfe-dev] Clang/C++ problem?

Bo Persson bop at gmb.dk
Mon Jan 24 16:02:49 PST 2011


Marshall Clow wrote:

> Shouldn't this work?
> If it should work, should I write up a bug?
>
> $ cat junk.cpp
>> typedef int Foo_t;
>>
>> template <typename T>
>> T DoSomething ( T t) { return t; }
>>
>> int main ( int argc, char *argv [] ) {
>>     int foo = 23;
>>     DoSomething ( static_cast<unsigned int>(foo));
>>     DoSomething ( static_cast<unsigned Foo_t>(foo));
>>     return 0;
>>     }
>>
>
> $ g++ junk.cpp
>
> $ clang junk.cpp
>> junk.cpp:9:36: error: expected '>'
>>         DoSomething ( static_cast<unsigned Foo_t>(foo));
>>                                           ^
>>                                           >
>> junk.cpp:9:27: note: to match this '<'
>>         DoSomething ( static_cast<unsigned Foo_t>(foo));
>>                                  ^
>> 1 error generated.
>>
>

No, this shouldn't work. Some types, like 'unsigned int' are formed by 
two keywords, but that doesn't mean you can use one keyword first and 
add the other one later.



Bo Persson




More information about the cfe-dev mailing list