<div dir="ltr">Looks like glibc provides it in <string.h> too if _GNU_SOURCE is defined, which it *always* is when compiling in C++ mode (unless explicitly undefined). :-(<div><br></div><div>Is it still the case that glibc requires _GNU_SOURCE to be defined in order for it to provide the symbols that C++ compilation requires? A quick test seems to show that _ISOC99_SOURCE (or sometimes _ISOC11_SOURCE) is actually sufficient. Perhaps we should provide a mode that doesn't define _GNU_SOURCE (ideally, -std=c++XX would have that effect, but that's probably going to break too much).<br><div class="gmail_extra"><br><div class="gmail_quote">On 29 October 2017 at 13:14, Richard Smith <span dir="ltr"><<a href="mailto:richard@metafoo.co.uk" target="_blank">richard@metafoo.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">There is a ::index function in strings.h on some platforms that might be leaking into <algorithm>.</div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="gmail-m_-7009765878538134777h5">On 29 Oct 2017 13:10, "Klemen Forstnerič via cfe-dev" <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>> wrote:<br type="attribution"></div></div><blockquote class="gmail-m_-7009765878538134777m_-6768994868977416032quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div class="gmail-m_-7009765878538134777h5"><div dir="ltr">Hi libc++ developers,<div><br></div><div>I'm having a problem compiling the following code:</div><div><br></div><div>Header (index.hpp):</div><div><br></div><div><div><font face="monospace, monospace">#ifndef INDEX_HPP_</font></div><div><font face="monospace, monospace">#define INDEX_HPP_</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">#include <algorithm></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">namespace index {</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">class Index {</font></div><div><font face="monospace, monospace"> public:</font></div><div><font face="monospace, monospace">  Index();</font></div><div><font face="monospace, monospace">};</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">}</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">#endif // INDEX_HPP_</font></div></div><div><br></div><div>Source (index.cpp):</div><div><br></div><div><div><font face="monospace, monospace">#include "index.hpp"</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">namespace index {</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Index::Index() {</font></div><div><font face="monospace, monospace">}</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">}</font></div></div><div><br></div><div>These are the errors I get:</div><div><br></div><div><div><font face="monospace, monospace">index.cpp:5:1: error: use of undeclared identifier 'Index'; did you mean '::index::Index'?</font></div><div><font face="monospace, monospace">Index::Index() {</font></div><div><font face="monospace, monospace">^~~~~</font></div><div><font face="monospace, monospace">::index::Index</font></div><div><font face="monospace, monospace">./index.hpp:8:7: note: '::index::Index' declared here</font></div><div><font face="monospace, monospace">class Index {</font></div><div><font face="monospace, monospace">      ^</font></div><div><font face="monospace, monospace">index.cpp:5:8: error: cannot define or redeclare 'Index' here because namespace 'index' does not enclose namespace 'Index'</font></div><div><font face="monospace, monospace">Index::Index() {</font></div><div><font face="monospace, monospace">~~~~~~~^</font></div><div><font face="monospace, monospace">2 errors generated.</font></div></div><div><br></div><div>This is my compile command:</div><div><font face="monospace, monospace">clang++ --stdlib=libc++ index.cpp</font><br></div><div><br></div><div>clang version:</div><div><div><font face="monospace, monospace">clang version 5.0.0 (tags/RELEASE_500/final)</font></div><div><font face="monospace, monospace">Target: x86_64-unknown-linux-gnu</font></div><div><font face="monospace, monospace">Thread model: posix</font></div><div><font face="monospace, monospace">InstalledDir: /usr/local/bin</font></div></div><div><br></div><div>libc++ version is today's trunk</div><div><br></div><div>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><br></div><div><br></div><div>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><br></div><div>Is this a libc++ bug?</div><div><br></div><div>Cheers,</div><div>Klemen</div></div>
<br></div></div>______________________________<wbr>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div>
</blockquote></div><br></div></div></div>