On Mon, Sep 01, 2003 at 04:05:59PM -0600, Dave Gomboc wrote:
> [Brian McNamara]
> >    do_something( adapt( 3               ) );
> >    do_something( adapt( nilable<int>(3) ) );
> >    do_something( adapt( foo             ) );  // foo has unknown type
> 
> But I'd like to write
>     do_something(3);
>     do_something(foo);  // of type T
>     do_something(bar);  // of type nilable<T>
> 
> Can I have my cake and eat it too? ;-)

Yes:

   template <class T>
   void do_something( T x ) {
      do_something_helper( adapt(x) );
   }
   template <class T>
   void do_something_helper( nilable<T> x ) {
      /* actually do it */
   }

(Shameless plus: Note that with FC++, 
   do_something = compose( do_something_helper, adapt );
or
   do_something = do_something_helper ^of^ adapt;
provided that things are defined as functoids.)

-- 
-Brian McNamara ([EMAIL PROTECTED])
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to