3 ms·
C++ could adopt the UFCS universal-function-call feature of D-language that allows any ordinary free function to be called as if they were methods, without any
by edsac_xyzw 6y ago
C++ could adopt the UFCS universal-function-call feature of D-language that allows any ordinary free function to be called as if they were methods, without any special kind of type annotation. One of major advantages of UFCS is that it enhances the discoverability of free functions in IDEs. An user could write 'Object' followed by dot '.' and the IDE could show all possible functions applicable to that type. In D-language, the UFCS also works for primitive types such as int, double and so on.
D-Language UFCS: http://ddili.org/ders/d.en/ufcs.html http://ddili.org/ders/d.en/ufcs.html and https://tour.dlang.org/tour/en/gems/uniform-function-call-syntax-ufcs https://tour.dlang.org/tour/en/gems/uniform-function-call-sy...
- gpderetta 6y agoIt could, but it keep getting rejected in committee votes, much to the frustration of Bjarne.
- mhh__ 6y agoIt's a shame. UFCS is one of the single biggest features that could really shave off huge amounts of boilerplate. It can also allow you to provide fine grained type safety where you may not usually be able to (as opposed to passing this down the chain a la operator<<)
- leni536 6y ago> C++ could adopt the UFCS universal-function-call feature of D-language that allows any ordinary free function to be called as if they were methods, without any special kind of type annotation. It really couldn't. It would be a breaking change.
- gpderetta 6y agowhat would it break? It litterally was proposed by an extension, with support from Stroustrup. IIRC Stroustrup regrets using . for member function calls (as opposed to just some syntactic sugar for any function call)
- leni536 6y agoThe way it was worded in the GP comment would change name lookup in existing well-formed programs, making them fail to compile, or compile differently. I'm not familiar with Stroustrup's proposal, but I doubt that he proposed it without some opt-in annotation.
- WalterBright 6y agoIt also reduces the motivation to make "kitchen sink" classes. The idea is that functions that don't need access to private class members should not be member functions.