Boost logo

Boost :

From: Beman Dawes (beman_at_[hidden])
Date: 1999-11-23 21:31:37

At 07:08 AM 11/23/99 -0500, John Maddock wrote:

>The paremeter traits idea would indeed be a very useful addition.

I fooled around with it a bit more this evening, and it really does
look worth developing further, IMO.

> ...
>I was also playing with this idea and wondered whether a version for
>arguments would be useful, using your code as a basis it would look
>something like:
> ...

I'm not sure a separate class is needed. If parameter_traits is
specialized for both <T*> and <const T*>, and for <T&> and <const T&>
per your example, is there really a need for a separate class.

I also tried specializing on <T[sz]> and <const T[sz]> like this:

template< typename T, int sz >
struct parameter_traits< const T[sz] >
    typedef const T * decayed_type;
    typedef const T * parameter_type;
    static const char * which() { return "const T[sz]
specialization"; }

This actually works, at least with GCC 2.95.2! Many other compilers
decay the template argument, which they shouldn't, according to
Dietmar Kuehl.

By the way, Dietmar was the one who taught me how to write the above
specialization - I couldn't have figured it out myself in a million

You can use that specialization so the arguments like "abc" work

Beyond parameter_type, what other typedefs should be included? I
change template_type to decayed_type for now, and removed raw_type.
Need to figure out which would be actually useful and which are just


Boost list run by bdawes at, gregod at, cpdaniel at, john at