On Sunday, December 23, 2012 21:36:34 Phil Lavoie wrote: > Never mind my last question. Found that it stands for: uniform > function call syntax. Now I am going to look into what that means > and how it affects the "no accessibility but visibility" thingy.
It means that any free function can be called as if it were a member function of the type that it takes as its first argument. So, it's possible to do something like auto result = range.find(subRange); instead of auto result = find(range, subRange); For better or worse, you can even do things like int i = 5.min(12); As for accessibility, if I had struct S { } auto foo(S) {...} and code which did s.foo(); if I added a private function named foo to S struct S { private auto foo() {...} } then all of a sudden, the s.foo() call would be illegal, because in UFCS, the member function always wins when there's a conflict. However, if private were hidden (or at least didn't factor into overload sets), then s.foo() wouldn't break as long as it was outside of the module that S was in, because the foo function in S then wouldn't affect anything outside of that module, since it would be inaccessible to anything outside of that module. - Jonathan M Davis