Quantcast
Channel: Clang: no warning with -Wdangling-gsl and curly braces initialization, bug in clang? - Stack Overflow
Viewing all articles
Browse latest Browse all 30

Clang: no warning with -Wdangling-gsl and curly braces initialization, bug in clang?

$
0
0

Consider the following snippet:

#include <string>#include <string_view>int main() {  auto str = std::string{};  auto sv1 = std::string_view(str +"!"); // <- warning :)  std::string_view sv2(str +"!");        // <- warning :)  std::string_view sv3 = str +"!";       // <- warning :)  auto sv4 = std::string_view{str +"!"}; // <- no warning :(  std::string_view sv5{str +"!"};        // <- no warning :(}

Compiled with flags -std=c++17 -Wdangling-gsl. Tested in clang 12.0.1 and trunk in compiler explorer.

As expected, in sv1, sv2 and sv3, str +"!" triggers the warning:

Object backing the pointer will be destroyed at the end of the full-expression [-Wdangling-gsl]

However in sv4 and sv5 the same expression, but using {}, does not.

Is this an expected behaviour of using {}? Is this a bug in clang? Am I just missing something?


Viewing all articles
Browse latest Browse all 30