[cfe-commits] r60900 - in /cfe/trunk: include/clang/Parse/Ownership.h

Sebastian Redl sebastian.redl at getdesigned.at
Fri Dec 12 15:14:53 PST 2008


On Fri, 12 Dec 2008 17:32:04 -0500, steve naroff <snaroff at apple.com> wrote:
> On Dec 12, 2008, at 4:52 PM, Howard Hinnant wrote:
> 
>> I'm afraid I don't have access to Windows.  Is there a compiler  
>> switch you could try that is along the lines of "stress conformance  
>> instead of backwards compatibility"?
>>
> 
> I'm not aware of any.

Try /Za. However, if anything in LLVM includes <windows.h>, that won't
work, because in a case of grotesque idiocy by the various MS teams
involved in this, windows.h won't compile under /Za. MS never bothered to
implement #pragma system_header either.
Or, at least this was the case in VS.Net 2003. Maybe in 2005 it's
different.

> Since you are familiar with this specific C++  
> idiom, you might try Googling for some info. I'd do it myself, however  
> I'm not as plugged into the history of this particular C++ idiom (so  
> you'd likely have more success finding the right stuff:-)

I've downloaded VS Express 2008, but CMake's site is down, so I can't
compile the project at this time. (Also, it's late and I need to go to
bed.)

My guess is that this fails because VS allows a temporary to bind to a
non-const reference. This means that the hidden non-const copy constructor
is suddenly preferred over the conversion to the mover followed by
initialization through the mover constructor. Since the non-const copy
constructor is private, this fails. (And the equivalent for the assignment
operators.)

I have some ideas for a workaround, but I need a working compilation
environment first. Are there instructions for compiling the thing with VC++
written up somewhere? I can follow the instructions for LLVM itself, but I
don't know what to do with Clang.
If there are no instructions, can you write something up, please?

Sebastian



More information about the cfe-commits mailing list