On 07/02/2013 09:35 AM, monarch_dodra wrote:
Furthermore, I find UFCS construction confusing on the grounds that there is no
actual
"constructor function" eg: "this(...)" call: This is just aggregate
initialization,
Aggregate initialization is the job of the constructor. It is a default
constructor call.
which looks *very* confusing when written that way.
I disagree, even though the example appears to be specifically designed
to confuse. Actual usage looks like this:
import std.stdio, std.bigint
void main(){
writeln(2.BigInt ^^ 123456);
}
------------------------------------
So to sum up the question: Was UFCS + constructors are really desired
feature?
UFCS allows foo(a,b) to be written as a.foo(b), if 'foo' is not a member
of a.
Was it taken into account?
I guess so.
Do we want to keep it?
There is no reason to artificially ban it.
In particular, the "standard" workaround of "free function constructor"
What is the difference?
(EG "Take" vs "take") would serve much better here.
"take" is not a "free function constructor".