[cfe-dev] Using declarations
    Douglas Gregor 
    dgregor at apple.com
       
    Thu Jun 11 08:52:26 PDT 2009
    
    
  
On Jun 11, 2009, at 5:02 AM, AlisdairM(public) wrote:
> I would be interested in any work on using declarations, as I have  
> been
> scoping that out for my next project after the Unicode work.
>
> Again, I was looking for a simple idea (C++0x type alias - should be  
> able to
> hook directly into typedef code) and discovered a much deeper hole.   
> So my
> concern is that any work here looks ahead to all the possible  
> directions
> that C++0x will go.
"using" got a lot more complicated in C++0x. Heck, it has more new  
meanings than "auto"!
Still, I don't think it's all that hard to deal with these variants.
> In short, if we see the keyword 'using' we may be about to parse:
>
> i/ a using directive for namespaces
We have the "namespace" keyword, so this is easy to cope with.
> ii/ a C++98 using declaration
Since we turn nested-name-specifiers into a single token, this is  
pretty easy to cope with. Although semantic analysis will have to  
distinguish it from...
> iii/ a C++0x inheriting constructor declaration -> declares *a set* of
> constructors
... this one.
> iv/ a C++0x alias declaration => this declares a C++98 typedef name
This is easy to distinguish with two-token lookahead, although it'd be  
better if we didn't need it.
> v/ a C++0x template alias, if using preceded by a template declaration
Same as above; we just have to cope with a template header.
> vi/ a number of concept-related variants that I don't quite grok yet.
These are for scoped concept maps.
> The current code is only annotated with the grammar for (i) and (ii)
Our general philosophy is: make C++98/03 work first, but design in  
support for C++0x so that it's easy to implement later. Of course, we  
love patches for C++0x features, too!
> Personally, I would rather see a broad set of test-cases before  
> starting an
> implementation, as there are some nasty cases to catch such as  
> different
> rules for duplicate identifiers at namespace or class scope etc.
So long as we have a decent test case with the implementation, I'm  
happy. That said, Alisdair implies another important point: coming up  
with test cases is very helpful for the development process, even when  
we don't yet have an implementation!
	- Doug
    
    
More information about the cfe-dev
mailing list