<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class="">On Oct 29, 2017, at 4:14 PM, Richard Smith via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" class="">cfe-dev@lists.llvm.org</a>> wrote:</div><div class=""><div dir="auto" class="">There is a ::index function in strings.h on some platforms that might be leaking into <algorithm>.</div></div></blockquote><div><br class=""></div>And I would add to this that I've definitely seen Clang give pretty bad diagnostics when it hits this kind of ambiguity.</div><div><br class=""></div><div>John.</div><div><br class=""><blockquote type="cite" class=""><div class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On 29 Oct 2017 13:10, "Klemen Forstnerič via cfe-dev" <<a href="mailto:cfe-dev@lists.llvm.org" class="">cfe-dev@lists.llvm.org</a>> wrote:<br type="attribution" class=""><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="">Hi libc++ developers,<div class=""><br class=""></div><div class="">I'm having a problem compiling the following code:</div><div class=""><br class=""></div><div class="">Header (index.hpp):</div><div class=""><br class=""></div><div class=""><div class=""><font face="monospace, monospace" class="">#ifndef INDEX_HPP_</font></div><div class=""><font face="monospace, monospace" class="">#define INDEX_HPP_</font></div><div class=""><font face="monospace, monospace" class=""><br class=""></font></div><div class=""><font face="monospace, monospace" class="">#include <algorithm></font></div><div class=""><font face="monospace, monospace" class=""><br class=""></font></div><div class=""><font face="monospace, monospace" class="">namespace index {</font></div><div class=""><font face="monospace, monospace" class=""><br class=""></font></div><div class=""><font face="monospace, monospace" class="">class Index {</font></div><div class=""><font face="monospace, monospace" class=""> public:</font></div><div class=""><font face="monospace, monospace" class="">  Index();</font></div><div class=""><font face="monospace, monospace" class="">};</font></div><div class=""><font face="monospace, monospace" class=""><br class=""></font></div><div class=""><font face="monospace, monospace" class="">}</font></div><div class=""><font face="monospace, monospace" class=""><br class=""></font></div><div class=""><font face="monospace, monospace" class="">#endif // INDEX_HPP_</font></div></div><div class=""><br class=""></div><div class="">Source (index.cpp):</div><div class=""><br class=""></div><div class=""><div class=""><font face="monospace, monospace" class="">#include "index.hpp"</font></div><div class=""><font face="monospace, monospace" class=""><br class=""></font></div><div class=""><font face="monospace, monospace" class="">namespace index {</font></div><div class=""><font face="monospace, monospace" class=""><br class=""></font></div><div class=""><font face="monospace, monospace" class="">Index::Index() {</font></div><div class=""><font face="monospace, monospace" class="">}</font></div><div class=""><font face="monospace, monospace" class=""><br class=""></font></div><div class=""><font face="monospace, monospace" class="">}</font></div></div><div class=""><br class=""></div><div class="">These are the errors I get:</div><div class=""><br class=""></div><div class=""><div class=""><font face="monospace, monospace" class="">index.cpp:5:1: error: use of undeclared identifier 'Index'; did you mean '::index::Index'?</font></div><div class=""><font face="monospace, monospace" class="">Index::Index() {</font></div><div class=""><font face="monospace, monospace" class="">^~~~~</font></div><div class=""><font face="monospace, monospace" class="">::index::Index</font></div><div class=""><font face="monospace, monospace" class="">./index.hpp:8:7: note: '::index::Index' declared here</font></div><div class=""><font face="monospace, monospace" class="">class Index {</font></div><div class=""><font face="monospace, monospace" class="">      ^</font></div><div class=""><font face="monospace, monospace" class="">index.cpp:5:8: error: cannot define or redeclare 'Index' here because namespace 'index' does not enclose namespace 'Index'</font></div><div class=""><font face="monospace, monospace" class="">Index::Index() {</font></div><div class=""><font face="monospace, monospace" class="">~~~~~~~^</font></div><div class=""><font face="monospace, monospace" class="">2 errors generated.</font></div></div><div class=""><br class=""></div><div class="">This is my compile command:</div><div class=""><font face="monospace, monospace" class="">clang++ --stdlib=libc++ index.cpp</font><br class=""></div><div class=""><br class=""></div><div class="">clang version:</div><div class=""><div class=""><font face="monospace, monospace" class="">clang version 5.0.0 (tags/RELEASE_500/final)</font></div><div class=""><font face="monospace, monospace" class="">Target: x86_64-unknown-linux-gnu</font></div><div class=""><font face="monospace, monospace" class="">Thread model: posix</font></div><div class=""><font face="monospace, monospace" class="">InstalledDir: /usr/local/bin</font></div></div><div class=""><br class=""></div><div class="">libc++ version is today's trunk</div><div class=""><br class=""></div><div class="">System: Linux trusty64 3.16.0-55-generic #74~14.04.1-Ubuntu SMP Tue Nov 17 10:15:59 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">If I don't include <algorithm> or if I change the name of the namespace to something other than "index", the code compiles.</div><div class=""><br class=""></div><div class="">Is this a libc++ bug?</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">Klemen</div></div>
<br class="">______________________________<wbr class="">_________________<br class="">
cfe-dev mailing list<br class="">
<a href="mailto:cfe-dev@lists.llvm.org" class="">cfe-dev@lists.llvm.org</a><br class="">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/<wbr class="">mailman/listinfo/cfe-dev</a><br class="">
<br class=""></blockquote></div><br class=""></div>
_______________________________________________<br class="">cfe-dev mailing list<br class=""><a href="mailto:cfe-dev@lists.llvm.org" class="">cfe-dev@lists.llvm.org</a><br class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev<br class=""></div></blockquote></div><br class=""></body></html>