gcd
/ lcm
and bool
Section: 13.1.2 [fund.ts.v2::numeric.ops.gcd], 13.1.3 [fund.ts.v2::numeric.ops.lcm] Status: TS Submitter: Richard Smith Opened: 2016-06-15 Last modified: 2017-07-30
Priority: 4
View all other issues in [fund.ts.v2::numeric.ops.gcd].
View all issues with TS status.
Discussion:
Addresses: fund.ts.v2
According to N4562, gcd
and
lcm
support bool
as the operand type. The wording doesn't appear to cover the behavior for that case,
since bool
does not have a zero value and gcd
/ lcm
are not normally mathematically defined
over {false, true}
.
gcd
and lcm
shouldn't accept arguments of type bool
.
[2016-08-01, Walter Brown suggests wording]
A corresponding issue has been added addressing the WP, see LWG 2759.
[2016-08, Chicago]
Monday PM: Moved to Tentatively Ready
Proposed resolution:
This wording is relative to N4600.
Adjust 13.1.2 [fund.ts.v2::numeric.ops.gcd] p3 as indicated:
template<class M, class N> constexpr common_type_t<M, N> gcd(M m, N n);[…]
-3- Remarks: If eitherM
orN
is not an integer type, or if either is (possibly cv-qualified)bool
, the program is ill-formed.
Adjust 13.1.3 [fund.ts.v2::numeric.ops.lcm] p3 as indicated:
template<class M, class N> constexpr common_type_t<M, N> lcm(M m, N n);[…]
-3- Remarks: If eitherM
orN
is not an integer type, or if either is (possibly cv-qualified)bool
, the program is ill-formed.