https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67434

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |INVALID

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Michal Kucharski from comment #0)
> std::chrono::duration<double> benchmark( ) 
> {
>   std::random_device rd;
> 
>   std::chrono::duration<double> total;

You have not initialized this variable.

>   
>   for (int i = 0; i < 100; i++) 
>   {
>      auto t1 = std::chrono::high_resolution_clock::now();
>      auto t2 = std::chrono::high_resolution_clock::now();
>      total += std::chrono::duration_cast<std::chrono::duration<double>>(t2 -
> t1);

This has undefined behaviour because you are performing addition on an
uninitialized value. You could have found this with valgrind.

Reply via email to