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

2022-11-24


2446. Questionable type-dependency of concept-ids

Section: 13.8.3.3  [temp.dep.expr]     Status: C++20     Submitter: Hubert Tong     Date: 2019-02-03

[Accepted at the February, 2020 (Prague) meeting.]

The rules for type-dependency do not appear to take the bool type associated with concept-ids into account. For example:

  template <typename T> concept C = true;
  template <typename T> struct A;
  template <> struct A<bool> { using type = bool; };

  template <typename T>
  void f(A<decltype(C<T>)>::type); // error: needs typename to avoid vexing parse

Proposed resolution (February, 2020):

  1. Change 13.8.3.3 [temp.dep.expr] paragraph 3 as follows:

  2. An id-expression is type-dependent if it is not a concept-id and it contains

  3. Change 13.8.3.4 [temp.dep.constexpr] paragraph 3 as follows:

  4. An id-expression is value-dependent if: