I know very well why one needs to use typename
for dependent types, since the compiler may not be able to disambiguate between a type and a variable declaration whe
There is no hard reason. As ralismark said, a paper was discussed this year (for C++20, not 17!). There are concerns, but also counterpoints:
typename
will become rare enough as to have near-consistency in the other direction. (As has been said, there was already an exceptional case in the form of base class names.)The paper has strong support and the new rules will probably appear in the working draft in a few months.