[Bug libstdc++/67434] std::chrono::duration acts like static even if instantiated every time
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Sep 2 11:28:00 GMT 2015
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.
More information about the Gcc-bugs
mailing list