----- Original Message -----
From: "John Maddock" <[EMAIL PROTECTED]>
To: "Boost mailing list" <[EMAIL PROTECTED]>
Sent: Wednesday, November 13, 2002 8:53 AM
Subject: Re: [boost] Can type_traits be user specialized?


> > Suppose I'm writing some generic piece of numeric code that can be
> > instantiated with a User Defined Type (UDT).
> > And further suppose that I need to detect whether the generic numeric
type
> > represents either integer or floating point values.
> > Can I use type_traits is_integral<> (or is_float<>)? That is, is the
user
> > allowed to provide her own specializations of this templates?
> > If not, how should I let the user tell whether her numeric UDT is
> > integer/float/signed/etc...?
>
> No, is_integer and is_float etc are for built-in types *only*.  If you
want
> to detect UDT's that are pretending to be numbers, then you should use
> std::numeric_limits<>, and provide a specialisation for these if required.
>
> John Maddock
> http://ourworld.compuserve.com/homepages/john_maddock/index.htm
>
Thanks, that's what I thought.

I have a problem however, which I think it would be useful to discuss
generally.

Unfortunately, some compilers -like bcc55- provide a 'default'
numeric_limits<> with no compile-time constants, while the specializations
do have compile-time values. Therefore, boost's numeric_limits<> is not
picked up for these compilers; but trying to use numeric_limits<> with user
defined types fails to compile unless the types explicitly specialize it
properly.

I see three possible solutions here:

(1) REQUIRE user defined types to *properly* specialize numeric_limits.
(2) Enhance boost/limits.hpp so that it 'fixes' only the default
numeric_limits<> if only that one is broken.
(3) Define my own user specializable traits.

(3) is IMO a very bad idea since we would end up with overlapping traits and
potential ODR violations.
(2) might be a better solution but requires further examination.
(1) is the easiest way to go from the library developer POV, but might annoy
users.

What's your advise?

TIA,

Fernando Cacciola

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to