
On Thu, 19 Apr 2007 23:10:31 +0200, Michael Marcin <mmarcin@method-solutions.com> wrote:
I want to enable a function templated on a type T if a function it relies on overloaded on that type.
.....
template< typename T > inline typename detail::enable_if_overloaded< T (T), std::asin, radians<T>
::type my_asin( T x ) { return radians<T>( std::asin( x ) ); }
I tried your code on gcc 4.1.1 and compiler crashes, too. I found that if the function symbol passed as argument for Signature* template parameter isn't overloaded, that is there is only one signature bounded to the function name, your code works correctly. IMO the problem is : if a function is overloaded what is its type ? example: float std::asin(float ) long double std::asin(long double ) tipeof( std::asin ) is "float (float )" or "long double (long double )" ? I don't know what the standard says about. Anyway, I don't understand why vc and gcc crash. Marco -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/