Created on 2024-09-02.00:00:00 last changed 1 week ago
Proposed resolution (approved by CWG 2024-11-08):
Change in 13.8.3.2 [temp.dep.type] paragraph 1 as follows:
A name or template-id refers to the current instantiation if it is
- ...
- in the definition of a nested class of a class template, the name of the nested class referenced as a member of the current instantiation,
or- in the definition of a class template partial specialization or a member of a class template partial specialization, the name of the class template followed by a template argument list equivalent to that of the partial specialization (13.7.6 [temp.spec.partial]) enclosed in <> (or an equivalent template alias specialization)
., or- in the definition of a templated function, the name of a local class (11.6 [class.local].
Consider:
template<class T>
void f()
{
struct Y {
using type = int;
};
Y::type y; // error; missing typename
}
Since lookup of Y always finds the local class, regardless of T, the requirement to apply typename is too strict.
History | |||
---|---|---|---|
Date | User | Action | Args |
2024-11-09 00:21:39 | admin | set | messages: + msg7888 |
2024-11-09 00:21:39 | admin | set | status: open -> tentatively ready |
2024-09-02 00:00:00 | admin | create |