Do constructors in D support the privacy keyword?

H. S. Teoh hsteoh at quickfur.ath.cx
Sat Sep 7 11:48:16 PDT 2013


On Sat, Sep 07, 2013 at 08:37:05PM +0200, Gary Willoughby wrote:
> Do constructors in D support a privacy keyword? I'm guessing not
> because if i declare one like this:
> 
> class T
> {
>     private this()
>     {
>     }
> }
> 
> i can still instantiate the class like this:
> 
> auto x = new T();
> 
> and there is no error thrown. Am i right in thinking the privacy
> keyword is ignored?

Did you put the 'new' line in the same file as class T?  In D, 'private'
means 'private to this module', not 'private to this class' as in C++.
So 'new T()' should be compilable inside the same module, but not
outside. If it still compiles outside, I'd say file a bug.


T

-- 
A bend in the road is not the end of the road unless you fail to make
the turn. -- Brian White


More information about the Digitalmars-d-learn mailing list