Boost logo

Boost :

Subject: Re: [boost] [chrono] type_traits/common_type and integer/ratio
From: Michael Fawcett (michael.fawcett_at_[hidden])
Date: 2009-12-01 13:15:53


On Mon, Nov 30, 2009 at 7:25 AM, Vicente Botet Escriba
<vicente.botet_at_[hidden]> wrote:
>
> "In a nutshell, `common_type` is a trait that takes 1 or more types, and
> returns a type which all of the types will convert to. The default
> definition demands this conversion be implicit. However the trait can be
> specialized for user-defined types which want to limit their inter-type
> conversions to explicit, and yet still want to interoperate with the
> `common_type` facility.
>
> Example:
>
>    template <class T, class U>
>    typename common_type<complex<T>, complex<U> >::type
>    operator+(complex<T>, complex<U>);
>
> In the above example, "mixed-mode" complex arithmetic is allowed. The return
> type is described by `common_type`. For example the resulting type of adding
> a `complex<int>` and `complex<double>` might be a `complex<double>`."

I've needed this feature many times. Can you explain the pros/cons of
common_type against Boost.Typeof?

Thanks,

--Michael Fawcett


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