Boost logo

Boost Users :

From: Sam Gentile (ManagedCode_at_[hidden])
Date: 2002-11-14 10:24:02


<rant>

How positively delightful to wait 24 hours and get a non-response like
this. This is like pulling blood out of a stone. At this point, I'll
just forget it and use something else. I do understand that Boost users
tend to be extremely advanced C++ users. For the record, I have been
programming in C++ for well over 10 years and still get confused at
some of the things you do. I am questioning and not understanding your
approach at all. Why? Well, lets look at Stroustrup, 3rd edition page
160 "Macros are important in C, but have far fewer uses in C++. The
first rule about macros is: Don't use them if you don't have to. Almost
every macro demonstrates a flaw in the program, or the programmer." Then
"avoid macros." Now, I'm sure I'm missing your good reason but there you
go. To me, macros are an ugly legacy from C and render C++ code
unreadable and maintainable. So, how detailed does my question have to
be? I don't understand the whole approach and why it was taken. Is that
clear enough?

</rant>

 

Sam Gentile

.NET Consultant

ManagedCode_at_[hidden]

http://www.samgentile.com

http://radio.weblogs.com/0105852/

 

-----Original Message-----
From: Aleksey Gurtovoy [mailto:alexy_at_[hidden]]
Sent: Wednesday, November 13, 2002 8:55 PM
To: 'Boost-Users_at_[hidden]'
Subject: RE: [Boost-Users] A strange question-)

 

Sam Gentile wrote:
> I'm sorry, no I still don't understand. Could you please say more?

Well, it would help me if you've said what exact points in my answer you
are
having troubles with :).

Aleksey

>
> -----Original Message-----
> From: Aleksey Gurtovoy [mailto:alexy_at_[hidden]]
> Sent: Wednesday, November 13, 2002 3:19 AM
> To: 'Boost-Users_at_[hidden]'
> Subject: RE: [Boost-Users] A strange question-)
>
>
>
> Sam Gentile wrote:
> > I went there and indeed it can't get any simpler - at least
> > in theory-)
> > Read the document
> > C:\Boost\boost_1_29_0\libs\type_traits\c++_type_traits.htm
> > and its quite
> > simple:
> >
> > template <typename T>
> > struct is_void
> > { static const bool value = false; };
> >
> > template <>
> > struct is_void<void>
> > { static const bool value = true; };
> >
> > That's exactly what I want to show. So I go to the header files and
> > instead:
> >
> > //* is a type T void - is_void<T>
> >
> > BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_void,T,false)
> >
> > BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void,true)
> >
> >
> >
> > Huh? So I look in bool_trait_def.hpp:
> >
> > #define BOOST_TT_AUX_BOOL_TRAIT_DEF1(trait,T,C) \
> >
> > template< typename T > struct trait \
> >
> > : mpl::bool_c< C > \
> >
> > { \
> >
> > BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
> >
> > BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
> >
> > }; \
>
>
> Well, the original code doesn't have all these excessive newlines ;),
> but
> yes, basically that's how it's implemented.
>
> > Argh! Why is it done like this? This makes it much more
> > complicated and unreadable than it has to be. Why are macros
> > being used everywhere?
>
> Practical engineering matters. If you consider that the fact
> that there
> are
> ~60 trait templates in the library and every time when a new
> version of
> a
> compiler comes out, or when somebody starts porting the
> library to a new
> platform, there is a chance that you need to change half of those
> definitions, from, for instance,
>
> template <typename T>
> struct is_void
> : mpl::bool_c<false>
> {
> };
>
> to
>
> template <typename T>
> struct is_void
> {
> BOOST_STATIC_CONSTANT(bool, value = false);
> typedef mpl::bool_c<value> type;
> };
>
> it might all make sense, after all :). Something along the
> lines of both
> of
> the above scenarios has actually happened, a couple of times. It's not
> the
> whole picture yet, but IMO it's enough of the motivation already, so I
> won't
> go too deep into details :).
>
> Hope this answers your question,
> Aleksey
>
> Info: <http://www.boost.org>
> Wiki: <http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl>
> Unsubscribe: <mailto:boost-users-unsubscribe_at_[hidden]>
>
>
> Your use of Yahoo! Groups is subject to the Yahoo!
> <http://docs.yahoo.com/info/terms/> Terms of Service.
>
>
>
> [Non-text portions of this message have been removed]
>
>
> ------------------------ Yahoo! Groups Sponsor
> ---------------------~-->
> 4 DVDs Free +s&p Join Now
> http://us.click.yahoo.com/pt6YBB/NXiEAA/ASSHAA/EbFolB/TM
> --------------------------------------------------------------
> -------~->
>
> Info: <http://www.boost.org>
> Wiki: <http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl>
> Unsubscribe: <mailto:boost-users-unsubscribe_at_[hidden]>
>
>
> Your use of Yahoo! Groups is subject to
http://docs.yahoo.com/info/terms/

Info: <http://www.boost.org>
Wiki: <http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl>
Unsubscribe: <mailto:boost-users-unsubscribe_at_[hidden]>

Your use of Yahoo! Groups is subject to the Yahoo!
<http://docs.yahoo.com/info/terms/> Terms of Service.

[Non-text portions of this message have been removed]


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net