Package: libstdc++-12-dev
Version: 12.2.0-14+rpi1
Severity: normal
X-Debbugs-Cc: softw...@quantentunnel.de

Dear Maintainer,

I use std::chrono::time_point<std::chrono::steady_clock, 
std::chrono::milliseconds> and the  g++ compiler with -std=c++17.
When I calculate the difference between two timepoints (i.e., a duration in 
std::chrono::milliseconds)
and print the tick count obtained from count() using std::ostream and 
operator<<,
then the difference is printed as a negative number when it should be a (large) 
positive number.

Maybe the problem is in /usr/include/c++/12/bits/chrono.h where the definition 
of _GLIBCXX_CHRONO_INT64_T mixes signed and unsigned integers:
"static_assert(std::numeric_limits<unsigned long long>::digits >= 64,...)" 
checks that an unsigned integer is sufficiently large,
while "# define _GLIBCXX_CHRONO_INT64_T long long" omits signed or unsigned 
which defaults to my knowledge to signed.

E.g., std::chrono::time_point<std::chrono::steady_clock, 
std::chrono::milliseconds>::max() minus ...::min() prints a tick count of -1 
which supports
that it should be max UINT64.


-- System Information:
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 12 (bookworm)
Release:        12
Codename:       bookworm
Architecture: armv7l

Kernel: Linux 6.6.31+rpt-rpi-v7 (SMP w/4 CPU threads)
Kernel taint flags: TAINT_CRAP
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages libstdc++-12-dev depends on:
ii  gcc-12-base    12.2.0-14+rpi1
ii  libc6-dev      2.36-9+rpt2+deb12u7
ii  libgcc-12-dev  12.2.0-14+rpi1
ii  libstdc++6     12.2.0-14+rpi1

libstdc++-12-dev recommends no packages.

Versions of packages libstdc++-12-dev suggests:
pn  libstdc++-12-doc  <none>

-- no debconf information

Reply via email to