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

2023-01-15


2416. Explicit specializations vs constexpr and consteval

Section: 13.9.4  [temp.expl.spec]     Status: C++20     Submitter: Mike Miller     Date: 2019-06-07

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

According to 13.9.4 [temp.expl.spec] paragraph 13,

An explicit specialization of a function or variable template is inline only if it is declared with the inline specifier or defined as deleted, and independently of whether its function or variable template is inline.

The current wording does not specify the status of explicit specializations of constexpr and consteval function templates and members of class templates. Should a similar rule apply in those cases?

Proposed resolution (November, 2019):

Change 13.9.4 [temp.expl.spec] paragraph 14 as follows:

An explicit specialization of a function or variable template is inline only if it is declared with the inline specifier or defined as deleted, and independently of whether its function or variable template is inline. The inline, constexpr, and consteval properties of an explicit specialization of a function or variable template are determined by the explicit specialization and are independent of those properties of the template. [Example:...