| Re: [eigen] Namespaces |
[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]
On Thursday 11 October 2007 11:46:54 Andre Krause wrote:
> Cyrille Berger wrote:
> > On Wednesday 10 October 2007, Benoît Jacob wrote:
> >> we initially used namespaces, but switched to prefixing recently. The
> >> reason is that namespace offer little protection as most users will want
> >> to be "using namespace". For instance look at the EiObject class.
> >> Without prefix, it'd be Object. A much too common name. If we
> >> encapsulate it in a namespace, it becomes Eigen::Object, which is safe,
> >> but... most users would like to "using namespace Eigen" and if some
> >> class is called "Object" then "using namespace" is not an option,
> >> because "Object" is a too polluting name.
> >
> > In that case the compiler would return an error, it's hardly a problem.
> >
> >> Look at what Qt does. Qt classes are not encapsulated in any namespace,
> >> instead they have the Q prefix, like "QObject".
> >
> > Qt was first release at a time when namespaces were not well (if at all)
> > supported by most C++ compiler.
>
> why not make the eigen namespace name shorter?
>
> instead of Eigen::Vector<float,4>, just
>
> ei::Vector<float,4> ...
>
> it just looks better / more modern than EiVector...
> and if it is that short, one is less tempted to use "using namespace".
>
> and finally, it is no problem to use some typedefs.
>
> so i personally would rather like to see the prefix "Ei" removed.. but
> well, i could also easily life with the prefix. its just a bit uglier.
It's really a matter of taste. Some people will prefer EiVector because it's
shorted. Some other people will prefer Ei::Vector because the :: is more
evocative. In any case, the namespacing is just a special kind of prefixing.
So here we're only discussing prefix aesthetics -- we could go on forever.
And I'm not sure with what you mean with "it is no problem to use some
typedefs", but did you know, C++ doesn't allow cross-namespace typedefs. So
namespace A { class B; }
typedef A::B C;
shouldn't compile.
Cheers,
Benoit
Attachment:
signature.asc
Description: This is a digitally signed message part.
| Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |