Hi,
C++11 allowed writing "vector<vector<int>>" without a space between ">" and
">".
Objective-C++11 doesn't seem to allow "vector<id<protocol>>" though, and
the diagnostic message clang emits for it even gets worse with -std=c++11
(PR14603).
The attached patch allows vector<id<protocol>> (only in c++11 mode) by
pulling the parsing code for >> into its own function and calling it from
the objc protocol parsing code. In C++98-mode, this also improves the
produced diagnostic. I'm aware this is a language change, but it's more
permissive so it shouldn't break existing code, and the change feels
consistent with c++11 to me.
If you think the language change part is not desirable, I'd want to land
the patch but make the new function not suppress the '>>' diagnostic when
called from the protocol parser, for the improved diagnostic.
Thanks,
Nico
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121213/16e46ac1/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: clang-objcxx11.patch
Type: application/octet-stream
Size: 6931 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121213/16e46ac1/attachment.obj>