At 01:34 PM 12/17/2002, Greg Colvin wrote:
>At 09:47 AM 12/17/2002, you wrote:
>>I hope it is permissible to ask a mp question.
>>
>>I'd like to have a template parameter is an int.  If represents an
>>arithmetic shift of an integral value.  If the parameter is positive
>>I'd like to shift left, and if negative shift right.
>>
>>Is it feasible to implement something like this?  Any hints?
>
>   template <typename T, typename U> T shift(T val, U bits) {
>      if (bits > 0)
>         return val >> bits;
>      else if (bits < 0)
>         return val << -bits;
>      else
>         return val;
>   }

Sorry, I misunderstood the question.  The following is
simpler than Daniel's solution, but counts on the
compiler optimizing away the unreachable paths. 

   template <int bits, typename T> T shift(T val) {
      if (bits > 0)
         return val >> bits;
      else if (bits < 0)
         return val << -bits;
      else
         return val;
   }

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

Reply via email to