CWG Issue 2628 (original) (raw)

This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 118f. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2025-11-07


2628. Implicit deduction guides should propagate constraints

Section: 12.2.2.9 [over.match.class.deduct]Status: CD7Submitter: Roy JacobsonDate: 2022-09-11

[Accepted as a DR at the November, 2023 meeting.]

Consider:

template concept True = true;

template struct X { template requires True X(T, U(&)[3]); }; template<typename T, typename U> X(T, U(&)[3]) -> X; int arr3[3]; X z(3, arr3); // #1

According to 12.2.2.9 [over.match.class.deduct] bullet 1.1, the requires-clause of the constructor is not propagated to the function template synthesized for the implicit deduction guide. Thus, instead of favoring the more-constrained implicit deduction guide per 12.2.4.1 [over.match.best.general] bullet 2.6, the user-declared deduction-guide is preferred per 12.2.4.1 [over.match.best.general] bullet 2.11.

Proposed resolution (approved by CWG 2023-10-20):

Change in 12.2.2.9 [over.match.class.deduct] bullet 1.1 as follows: