Embarrassed to ask this question because it seems so trivial but genuinely curious...

WhatMeWorry kheaser at gmail.com
Thu Jan 27 17:42:09 UTC 2022


While studying Ali's book at chapter "Constructor and Other 
Special Functions" and the below code snippet:


import std.stdio;

     struct S {
         this(int i) { writeln("an object"); }

         // Original
         //this(int i) const { writeln("a const object"); }
         //this(int i) immutable { writeln("an immutable object"); 
}
         //this(int i) shared { writeln("a shared object"); }

         const this(int i) { writeln("a const object"); }
         immutable this(int i) { writeln("an immutable object"); }
         shared this(int i) { writeln("a shared object"); }
     }

     void main() {
         auto m = S(1);
         auto c = const(S)(2);
         auto i = immutable(S)(3);
         auto s = shared(S)(4);
     }

Assuming I can speak in correct programmer-ese: I was wondering 
why the qualifiers were placed after the function parameter list 
(int i).  Just for fun, I moved to type qualifiers before the 
function definitions "this" (like a return type?) and the output 
was  exactly identical.  So I guess my question is, is this just 
a matter of esthetics or is some more nuanced goal at work here?





More information about the Digitalmars-d-learn mailing list