[LLVMbugs] [Bug 18714] MS compatibility: Use token-based instantiation for -fdelayed-template-parsing
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Tue Jun 10 12:37:05 PDT 2014
http://llvm.org/bugs/show_bug.cgi?id=18714
Reid Kleckner <rnk at google.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution|--- |WONTFIX
--- Comment #2 from Reid Kleckner <rnk at google.com> ---
(In reply to comment #1)
> Can you give some pointers on the nature of the token transformation?
>
> Do you have a feel for the phases of token caching, instantiation and
> substitution that might be going on in MSVC?
First, I just want to say that I've been talked out of this approach since I
filed this bug, so I'm closing it. :)
Answering your question, yes, they appear to do roughly what
-fdelayed-template-parsing does: they parse class template bodies, but they
slurp the tokens from C++ inline method definitions and parse them once they
are instantiated and referenced. I believe you *need* to use typename with
MSVC when appropriate in a class template body outside of C++ inline methods.
The key difference is that method bodies are *never* parsed prior to
instantiation. The template parameters are substituted with arguments before
parsing, so MSVC always knows if a nested-name-specifier is a type.
Basically, I've gotten the hang of recovering from missing 'typename' now, so I
don't think it will be that hard to handle this without token substitution.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140610/b5ab8fa0/attachment.html>
More information about the llvm-bugs
mailing list