$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Daryle Walker (dwalker07_at_[hidden])
Date: 2003-03-02 20:55:02
On Thursday, February 13, 2003, at 6:11 AM, Daniel Frey wrote:
> 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