[cfe-dev] Inconsistent Wdangling-gsl warning

Gábor Horváth via cfe-dev cfe-dev at lists.llvm.org
Mon Jun 28 11:06:11 PDT 2021


Hi Csaba,

I do agree it seems to be a false negative. I plan to look into this at
some point but no promises when.

Cheers,
Gabor

On Fri, 25 Jun 2021 at 01:51, Csaba Raduly via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> Hi all,
>
> The following code:
>
> #include <string>
> #include <string_view>
> #include <iostream>
>
> int main()
> {
>     std::string_view sv1 = std::string_view{std::string{"string1"}};
>     std::cout << sv1;
>     std::string_view sv2 = std::string_view(std::string{"string2"}); //
> line 9
>     std::cout << sv2;
> }
>
> generates the following sequence of calls:
>
> call    std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> >::basic_string<std::allocator<char> >(char
> const*, std::allocator<char> const&)
> call    std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> >::operator std::basic_string_view<char,
> std::char_traits<char> >() const
> call    std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> >::~basic_string() [complete object destructor]
> call    std::basic_ostream<char, std::char_traits<char> >&
> std::operator<< <char, std::char_traits<char>
> >(std::basic_ostream<char, std::char_traits<char> >&,
> std::basic_string_view<char, std::char_traits<char> >)
> call    std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> >::basic_string<std::allocator<char> >(char
> const*, std::allocator<char> const&)
> call    std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> >::operator std::basic_string_view<char,
> std::char_traits<char> >() const
> call    std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> >::~basic_string() [complete object destructor]
> call    std::basic_ostream<char, std::char_traits<char> >&
> std::operator<< <char, std::char_traits<char>
> >(std::basic_ostream<char, std::char_traits<char> >&,
> std::basic_string_view<char, std::char_traits<char> >)
>
>
> https://godbolt.org/z/5erq8Mh7W
>
> However, only line 9 gets a Wdangling-gsl warning. Shouldn't line 7 get
> one too?
>
> Csaba
>
> --
> You can get very substantial performance improvements
> by not doing the right thing. - Scott Meyers, An Effective C++11/14 Sampler
> So if you're looking for a completely portable, 100% standards-conformant
> way
> to get the wrong information: this is what you want. - Scott Meyers
> (C++TDaWYK)
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20210628/9efe67b7/attachment.html>


More information about the cfe-dev mailing list