Hello, Michael.


Thursday, February 5, 2009 at 11:09:49 PM you wrote:


MF> We're getting off-topic, but I couldn't resist.

We are talking about namespaces, so I think it is good idea to look

around. :)


MF> What happens when I do:


MF> using System.Drawing;

MF> using Microsoft.XNA.Framework;


MF> Point p = new Point(); // Doh!

Good example. But... You have to do something very _special_ if you

want to get the same result inside only 'System' namespace. Isn't it?

I mean what you can use unqualified ids and usings in most cases

without any errors from the compilator _when you use only standard

facilities_.


MF> You see, these problems occur in C# too, and the same answer (from

MF> C++) is given as to how to correct the issue.  Make a namespace alias,

MF> or use full qualification.


MF> If you want to use boost, use boost::.  If you want to use the STD

MF> library, use std::.

Perfectly! What you can say about following pieces of code:


std::vector<std::shared_ptr<SomeClass>> vec;

std::for_each(vec.begin(), vec.end(), std::bind(&std::shared_ptr<SomeClass>::get, std::placeholders::_1, std::bind(&SomeClass::foo, std::placeholders::_1, 10)));


and


vector<shared_ptr<SomeClass>> vec;

for_each(vec.begin(), vec.end(), bind(&shared_ptr<SomeClass>::get, _1, bind(&SomeClass::foo, _1, 10)));


from the readness point of view?

Assume what I place std and std::placeholders namespace into new namespace ('slib'):


slib::vector<slib::shared_ptr<SomeClass>> vec;

slib::for_each(vec.begin(), vec.end(), slib::bind(&slib::shared_ptr<SomeClass>::get, slib::_1, slib::bind(&SomeClass::foo, slib::_1, 10)));


Is it quite readable or your eyes are seeing only 'slib' and '::'? Is _it_ improving of 'code readness'? And you are offering C++ beginners to use such coding style. It is good style, but I'm absolutely sure what beginners (even with C# or Java experience) say you something ugly and then return to C# or Java. :)


-- 

Best Regards,

 Sergey                          mailto:flex_ferrum@artberg.ru