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

--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-13 branch has been updated by Jonathan Wakely
<r...@gcc.gnu.org>:

https://gcc.gnu.org/g:13dd1501a1adc5d76c13ae36368bff3c3b64da37

commit r13-7627-g13dd1501a1adc5d76c13ae36368bff3c3b64da37
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Wed Jul 19 18:18:46 2023 +0100

    libstdc++: Check for std::ratio in arithmetic and comparisons [PR110593]

    The standard says that it should be ill-formed to use std::ratio_equal
    etc. with types which are not specializations of std::ratio. This
    implements that requirement.

    We don't need to add assertions to every one of the class templates,
    because many of them are implemented in terms of other ones. For
    example, ratio_divide and ratio_subtract can rely on the assertions in
    ratio_multiply and ratio_add respectively.

    libstdc++-v3/ChangeLog:

            PR libstdc++/110593
            * include/bits/chrono.h (duration): Improve static assert
            messages.
            (__is_ratio): Move to ...
            * include/std/ratio (__is_ratio): ... here.
            (__is_ratio_v): New variable template and partial
            specialization.
            (__are_both_ratios): New function template.
            (__ratio_multiply, ratio_equal, ratio_less, __ratio_add):
            Add static assertion.
            * testsuite/20_util/ratio/requirements/type_constraints.cc:
            New test.
            * testsuite/20_util/duration/requirements/typedefs_neg1.cc:
            Adjust expected error.
            * testsuite/20_util/duration/requirements/typedefs_neg2.cc:
            Likewise.

    (cherry picked from commit 2d614822e9ea2a3d8800045d66e3220743753d09)

Reply via email to