Why should this code be allowed to compile?
public abstract class AbstractPrivateBase
{
private AbstractPrivateBase() { }
}
Inheritors cannot instantiate themselves. Thusly, there is no way to derive from this class. I feel like Visual Studio (or even Resharper) should show an error stating something like, "Abstract classes cannot contain only private constructors." because it makes no sense in the language to allow this.
The only possible use would be if this class contained static members. If that is the case, a friendly warning stating, "Abstract classes with only private constructors can be made static." since there is no way to access any other members than the static ones.