calling functions without parentheses

Steven Schveighoffer schveiguy at
Mon Nov 8 11:51:13 PST 2010

On Mon, 08 Nov 2010 14:48:20 -0500, Adam Cigánek <adam.ciganek at>  

> Hello,
> It seems that if function has no parameters, it's possible to omit the
> parentheses when calling it:
>     string sayHello() {
>       return "hello";
>     }
>     void main() {
>       writeln(sayHello); // same as writeln(sayHello());
>     }
> Is this an actual defined (and documented) behaviour that I can expect
> to keep working in the future, or just some random unintended side
> effect which might disappear in a next version?

It is documented behavior in D1 and originally in D2.  D2 will eventually  
require you to mark function calls omitting parentheses with @property.   
This is valid D2 today, but the @property part is not required to call the  

@property string sayHello() {
     return "hello";

D1 will remain the same, i.e. it will not require @property.


More information about the Digitalmars-d-learn mailing list