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

Reply via email to