$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] [Polygon] review - isotropy.hpp
From: Simonson, Lucanus J (lucanus.j.simonson_at_[hidden])
Date: 2009-08-31 10:59:45
Stewart, Robert wrote:
> Simonson, Lucanus J wrote:
>> Steven Watanabe wrote:
>> 
>>> isotropy.hpp:308
>>> What does y_c_edist mean, and why are you including a
>>> constant in the gtl_and for euclidean_distance?
>> 
>> This is a compiler workaround for MSVC8.  There are a large
>> number of them, unfortuantely.  It is named with a mangling
>> scheme related to the concept and function name that uses it.
>>  MSVC8 has two different code paths for instantiating
>> templates and applying SFINAE.  The one where it recognizes
>> that it has seen a subtemplate before is incorrect and I used
>> these constant types that are unique to each function to
>> force MSVC8 to SFINAE correctly.  I could perhaps put a
>> 
>>  //MSVC8 workaround
>> 
>> on each one so that it doesn't cause too much confusion.
> 
> (Caveat: I'm only responding to what I read here: I haven't looked at
> the code in question.  I may be way off the mark.) 
> 
> How about introducing a macro taking a constant argument, that
> evaluates to the supplied constant, plus required punctuation, for
> MSVC8 and to nothing for other compilers?  That would make the code
> self documenting and eliminate any #ifdef's where used.   
> 
> BOOST_POLYGON_MSVC8_SFINAE_WORKAROUND?
The constant needs to be a unique type in each instance that the workaround is used.  Also, there are no ifdefs used for this workaround because the code is legal in all compilers.
Luke