<div dir="ltr">Hi Csaba,<div><br></div><div>I do agree it seems to be a false negative. I plan to look into this at some point but no promises when.</div><div><br></div><div>Cheers,</div><div>Gabor</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 25 Jun 2021 at 01:51, Csaba Raduly via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi all,<br>
<br>
The following code:<br>
<br>
#include <string><br>
#include <string_view><br>
#include <iostream><br>
<br>
int main()<br>
{<br>
    std::string_view sv1 = std::string_view{std::string{"string1"}};<br>
    std::cout << sv1;<br>
    std::string_view sv2 = std::string_view(std::string{"string2"}); // line 9<br>
    std::cout << sv2;<br>
}<br>
<br>
generates the following sequence of calls:<br>
<br>
call    std::__cxx11::basic_string<char, std::char_traits<char>,<br>
std::allocator<char> >::basic_string<std::allocator<char> >(char<br>
const*, std::allocator<char> const&)<br>
call    std::__cxx11::basic_string<char, std::char_traits<char>,<br>
std::allocator<char> >::operator std::basic_string_view<char,<br>
std::char_traits<char> >() const<br>
call    std::__cxx11::basic_string<char, std::char_traits<char>,<br>
std::allocator<char> >::~basic_string() [complete object destructor]<br>
call    std::basic_ostream<char, std::char_traits<char> >&<br>
std::operator<< <char, std::char_traits<char><br>
>(std::basic_ostream<char, std::char_traits<char> >&,<br>
std::basic_string_view<char, std::char_traits<char> >)<br>
call    std::__cxx11::basic_string<char, std::char_traits<char>,<br>
std::allocator<char> >::basic_string<std::allocator<char> >(char<br>
const*, std::allocator<char> const&)<br>
call    std::__cxx11::basic_string<char, std::char_traits<char>,<br>
std::allocator<char> >::operator std::basic_string_view<char,<br>
std::char_traits<char> >() const<br>
call    std::__cxx11::basic_string<char, std::char_traits<char>,<br>
std::allocator<char> >::~basic_string() [complete object destructor]<br>
call    std::basic_ostream<char, std::char_traits<char> >&<br>
std::operator<< <char, std::char_traits<char><br>
>(std::basic_ostream<char, std::char_traits<char> >&,<br>
std::basic_string_view<char, std::char_traits<char> >)<br>
<br>
<br>
<a href="https://godbolt.org/z/5erq8Mh7W" rel="noreferrer" target="_blank">https://godbolt.org/z/5erq8Mh7W</a><br>
<br>
However, only line 9 gets a Wdangling-gsl warning. Shouldn't line 7 get one too?<br>
<br>
Csaba<br>
<br>
-- <br>
You can get very substantial performance improvements<br>
by not doing the right thing. - Scott Meyers, An Effective C++11/14 Sampler<br>
So if you're looking for a completely portable, 100% standards-conformant way<br>
to get the wrong information: this is what you want. - Scott Meyers (C++TDaWYK)<br>
_______________________________________________<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="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote></div>