Terje Slettebų <[EMAIL PROTECTED]> writes:

>>From: "Hartmut Kaiser" <[EMAIL PROTECTED]>
>
>> David Abrahams wrote:
>> 
>> > > //  The following expands to
>> > > //
>> > > // typedef char (&sizeN_t)[N];
>> > > //
>> > > //  for N = 1..BOOST_MAX_SIZETYPE_COUNT
>> > > #define SIZETYPE(z, n, nil) \
>> > > typedef char (&size ## n ## _t)[n]; \
>> > > /**/
>> >
>> > Careful; isn't the symbol "_t" reserved to the implementation
>> > in this context?
>> 
>> The purpose of the macros was to generate a couple of
>>     typedef char (&sizeN_t)[N];   // for N=1..MAX
>> Statements, so _t is never seen by the compiler.
>> 
>> But anyway the solution proposed by Paul is cleaner, so I vote for it.
>
>>From Paul's posting:
>
>> You can achieve the effect you want easily:
>> 
>> template<int I> struct size_descriptor {
>>     typedef char (& type)[I];
>> };
>> 
>> typedef size_descriptor<1>::type yes_type;
>> typedef size_descriptor<2>::type no_type;
>> 
>> ...or something similar, which solves the problem once and for all.
>
> Looks good. What should we call it? size_descriptor, like here?

I already have such a metafunction in Boost.Python.  It's called
"char_array", since after all that's what it produces.

   boost/boost/python/detail/char_array.hpp

-- 
                       David Abrahams
   [EMAIL PROTECTED] * http://www.boost-consulting.com
Boost support, enhancements, training, and commercial distribution

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

Reply via email to