Boost logo

Boost :

From: Brock Peabody (brock.peabody_at_[hidden])
Date: 2003-08-01 14:50:57


> -----Original Message-----
> From: boost-bounces_at_[hidden]
[mailto:boost-bounces_at_[hidden]]
> On Behalf Of E. Gladyshev
> Sent: Friday, August 01, 2003 1:23 PM
> To: Boost mailing list
> Subject: Re: [boost] GUI/GDI template library
>
>
> --- Douglas Gregor <gregod_at_[hidden]> wrote:
> > > template < typename IT, typename PhysicalGuiLayer
> > >
> > > class ListControl
>
> I came with a name for this idiom, ImplTraits idiom.
>
> template <... typename ImplTraits >
> class someclass
>
>
> It is like the name of the pImpl idiom.

Even if the implementation is parameterized by a traits or other class,
we could still use a non template class in the implementation to reduce
compile times, which is what I though the original poster was trying to
say.

template <... typename ImplTraits> class some_edit_class :
edit_control_wrapper {};

Also, I wonder if we can delay specifying the traits. It might be nice
to not have to mention it everywhere. For instance, in Spirit you might
have a chuck of code like:

  r = real_p >> *(ch_p(',') >> real_p);

If you have to use a different type of scanner (which is sort of a
trait) you don't have to change the above code, just the type of the
rule, which is better than having to say:

  r = real_p<scanner_type>() >> *(ch_p<scanner_type>(',') >>
real_p<scanner_type>());

or to translate into the GUI library I've put up (have any of you looked
at the example code yet?):

  gui_application<my_traits> app = row("name: ", edit(&employee::name));

vs.

  gui_application<my_traits> app = row<my_traits>("name: ",
edit<my_traits>(&employee::name));

Does that make sense or am I off the mark?

Brock


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk