This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 115d. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2024-10-26
[Accepted at the November, 2020 meeting.]
Consider the following example:
template<typename ...T> auto f() {
using F = int(*)(int (...p)[sizeof(sizeof(T))]);
// ...
}
F is not covered in the list of cases in 13.8.3.2 [temp.dep.type] paragraph 9, because the types from which the function type is constructed are not dependent types. (The parameter pack p is of type int[sizeof(size_t)].) Similar situations arise with non-injective alias templates.
Proposed resolution (August, 2020):
Change 13.8.3.2 [temp.dep.type] paragraph 9 as follows:
A type is dependent if it is
...
an array type whose element type is dependent or whose bound (if any) is value-dependent,
a function type whose parameters include one or more function parameter packs,
a function type whose exception specification is value-dependent,
...
(We do have the relevant wording for pack expansions in simple-template-ids in bullet 9.8, so that similar case is already handled.)