[cfe-dev] blog post about clang diagnostics

Chris Lattner clattner at apple.com
Tue Apr 13 09:49:52 PDT 2010


fixed thanks.

On Apr 13, 2010, at 8:31 AM, James Widman wrote:

> 
> On Apr 6, 2010, at 2:36 AM, Chris Lattner wrote:
> 
>> FYI, it's been too long since we've had a blog post, so I wrote this up tonight:
>> http://blog.llvm.org/2010/04/amazing-feats-of-clang-error-recovery.html
>> 
>> Thoughts and comments welcome!
> 
> Apologies in advance, because I know I'm being pedantic, *but*...
> 
> You wrote:
>> [...] if you comment out the two
>> using directives in the example above [...]
> 
> Many seasoned C++ programmers get this terminology wrong.
> 
> The aforementioned things in the example:
> 
>  using B1::f;  using B2::f;
> 
> ... are using-declarations, not using-directives.  This might help to keep it straight:
> 
> A using-declaration is a *declaration* in the sense that it *declares* (introduces) a name in the scope where it appears.
> 
> A using-directive is not a declaration *at all*, and it doesn't introduce any names in the scope where it appears.  It is a *directive* in the sense that it sort of *tells name lookup to behave differently* (whereas a declaration tends to alter just the input to name lookup but not the behavior).
> 
> And a using-directive always names a *namespace*.
> 
> namespace N{}
> using namespace N; // ok
> 
> namespace Q{ void f(); }
> using namespace Q::f(); // error (expected a namespace name)
> 
> ... whereas a using-declaration can name just about anything that can be named with a qualified-id (with the exception of a template-id (grammar term)).
> 
> James Widman  
> -- 
> Gimpel Software 
> http://gimpel.com
> 
> 
> 





More information about the cfe-dev mailing list