mgehre / llvm-project

The home of the clang-based implementation of lifetime safety warnings.
39 stars 4 forks source link

std::ostream_iterator causes false "dangling pointer" positive #93

Open davidwin opened 4 years ago

davidwin commented 4 years ago

The following code should be considered correct (if you want to print the string "123"):

   std::vector<int> z { 1, 2, 3 };
   std::copy(z.begin(), z.end(), 
             std::ostream_iterator<int>(std::cout));

However, I get the following diagnostic

warning: passing a dangling pointer as argument [-Wlifetime]
             std::ostream_iterator<int>(std::cout));
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

note: it was never initialized here
             std::ostream_iterator<int>(std::cout));
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

See full repro case: https://godbolt.org/z/Rt3P6X

mgehre commented 4 years ago

Thanks you for taking the time to report this bug!

We will look into it.