On 12/23/18 7:09 AM, Michelle Long wrote:
class X
{
}
class X(int N) : X
{
}
Is there any real reason we can't do this?
I think it has less to do with class names and more to do with symbol
overloading.
The only place I think templates are allowed to overload names with
non-templates is functions, which actually was not always the case (you
used to have to only have templates or non templates as function overloads).
It is very nice to be able to treat X like the base and X!n as a derived
class.
The problem I see is:
template foo(alias A) { ... }
foo!X
Did you mean class X or template X?
For functions, this is OK, because it's one overload set.
-Steve