[Bug libstdc++/110593] New: The std::ratio meta arithmetic can accept non-std::ratio
hewillk at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sat Jul 8 05:01:47 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110593
Bug ID: 110593
Summary: The std::ratio meta arithmetic can accept
non-std::ratio
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: hewillk at gmail dot com
Target Milestone: ---
[ratio.general]: "If a template parameter is named R1 or R2, and the template
argument is not a specialization of the ratio template, the program is
ill-formed."
So for the following libstdc++ needs to be diagnosed, right?
#include <ratio>
struct Ratio { constexpr static double num = 0, den = 1; };
static_assert(std::ratio_equal<Ratio, std::ratio<0, 5>>());
https://godbolt.org/z/MhazY5ecn
Only MSVC-STL triggers the static assertion.
More information about the Gcc-bugs
mailing list