<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">On Mon, Sep 9, 2019 at 8:42 AM Yan  Yichen via libcxx-dev <<a href="mailto:libcxx-dev@lists.llvm.org">libcxx-dev@lists.llvm.org</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">





<div lang="DE-CH">
<div class="gmail-m_4760916602780089108WordSection1">
<p class="MsoNormal"><span lang="EN-US">Hi, I’m using libc++ with gcc and have met a problem with code below:</span></p></div></div></blockquote><div><br></div><div>Hmmm...  I think __builtin_strlen is constexpr on gcc.</div><div><br></div><div>Looking at a more minimal case:</div><div><br></div><div><p style="margin:0px;font-stretch:normal;font-size:12px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="color:rgb(155,35,147)"><b>int</b></span> main() { <span style="color:rgb(155,35,147)"><b>static_assert</b></span>(!__builtin_strlen(<span style="color:rgb(196,26,22)">""</span>)); }</p></div><div><br></div><div>It compiles fine under:</div><div><br></div><div>gcc 9.2, libstdc++</div><div><p style="margin:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:"Source Code Pro";color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">/usr/local/gcc/bin/g++-9 -std=c++17 a.cpp</span></p></div><div><br></div><div>clang 8, libc++</div><div><p style="margin:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:"Source Code Pro";color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">/usr/local/clang/bin/clang++ -std=c++17 a.cpp</span></p></div><div><br></div><div>gcc 9.2, libc++</div><div><span style="color:rgb(0,0,0);font-family:"Source Code Pro";font-size:11px">/usr/local/gcc/bin/g++-9 -nostdinc++ -I /usr/local/clang/include/c++/v1 -nodefaultlibs -lc++ -lc++abi -lm -lc -lgcc -std=c++17 a.cpp</span></div><div><span style="color:rgb(0,0,0);font-family:"Source Code Pro";font-size:11px"></span> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div lang="DE-CH"><div class="gmail-m_4760916602780089108WordSection1"><p class="MsoNormal"><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> </span><span style="font-family:Consolas">#include <string_view></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:Consolas">constexpr bool test() {<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:Consolas">    const char s1[] = "mave";<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:Consolas">    std::string_view s2(s1);<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:Consolas">    return true;<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:Consolas">}<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:Consolas">int main() {<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:Consolas">    static_assert(test());<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:Consolas">}</span></p></div></div></blockquote><div><br></div><div>This compiles fine under both gcc 9.2 libstdc++ and clang 8 libc++, but as you point out fails under gcc 9.2 libc++.</div><div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"> Nevin ":-)" Liber  <mailto:<a href="mailto:nevin@eviloverlord.com" target="_blank">nevin@cplusplusguy.com</a>>  +1-847-691-1404<br></div></div></div></div></div></div></div></div></div></div></div></div>