Markus Schöpflin wrote:
Daniel Frey wrote:
Markus Schöpflin wrote:
This was the original source:
template<bool, typename> struct enable_if; -----------------------^
Visual Age doesn't like this, it needs a name here.
^^^^^^^^^^
Ah, that's the reason. But given my recent discomfort about unmaintainable code, look at it again:
# if BOOST_WORKAROUND(__HP_aCC, <= 33900) template<bool cond, typename T> struct enable_if; # else template<bool, typename T> struct enable_if; # endif
Does this really makes sense? Shouldn't we just keep one version with names for template parameters? AFAICS this should work for all compilers and it could be a general boost coding guideline to always provide names for template parameters. Comments?
Agreed, if it works for all compilers, let's just keep the version with the names. (And add a comment that it should stay like it is!)
No, don't add a comment. Let's make it a boost coding guideline,
otherwise we will clutter the code again with comments instead of
workarounds. Remember that this is only one example of a line with
template parameters. Would you like to add a comment for every line all over boost?
Should the template parameter names be something like Unused (if there's exactly one) or Unused1, Unused2, etc.?
Later, on February 16, 2003, at 9:29 PM, Dave Gomboc wrote:
So you would prefer
#if BOOST_WORKAROUND(__HP_aCC, <= 33900) template<bool cond, typename T> struct enable_if; #elif BOOST_WORKAROUND(__VisualAge, <= 12345) // Dummy values template<bool, typename T> struct enable_if; #else template<bool, typename> struct enable_if; #endif
over
template<bool cond, typename T> struct enable_if;
If that is the case, then we disagree. Do you have any reason to prefer the first version?
No, I would prefer
#if BOOST_WORKAROUND(__HP_aCC, <=33900) || BOOST_WORKAROUND(__VisualAge,
<=12345)
template <bool cond, typename T> struct enable_if;
#else
template <bool, typename> struct enable_if;
#endif
I already explained the reason: C++ compiler vendors use Boost with
BOOST_NO_CONFIG for conformance testing. I'd rather see broken compilers get fixed than developers forever spending time finding workarounds.
If vendors want to do this check, then they could #define Unused, Unused1, Unused2, etc. to be nothing. (Make sure to check all the files to see if my suggestion is the only use of these words.)
Daryle
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost