Boost logo

Boost :

From: Andy Little (andy_at_[hidden])
Date: 2004-07-07 04:02:35

"Andy Little" <andy_at_[hidden]> wrote
 David Abrahams wrote
> > Arkadiy's typeof from the Boost Files area at yahoogroups:
> >

(BTW tinyurl died when I tried it direct... look for on boost
yahoo files)

> >
> > No docs, lots of examples.

It has some docs , which are entirely adequate to get you going IMO.

> Thanks... I'll take a look.

Well . I've tested it and am pleased to report that it works well .. test
code at the end.

In relation to my physical_quantities library when you want a temporary, by
the time you've registered it
it may simpler to use the result_of approach, where there is no requirement
to register. But that is a problem particular to my library where new types
of unknown origin are being computed all the time in a calculation. IOW you
need result_of to compute typeof as in code below.

Whatever... it does the job well. .. worth a look.

Andy Little

#include <boost/typeof/typeof.hpp>
#include "pqs/pqs.hpp"

//Note: not available in pqs-1-01-04
#include "pqs/operators/binary_operator_functors.hpp"



// required because a temporary result of calc
// is not same signature as q_velocity::m_div_s in pqs-2-00-01
typedef boost::result_of<
    pqs::operator_divides(pqs::q_length::m, pqs::q_time::s)
>::type anonymous_velocity;


using namespace pqs;

// dummy function return test
BOOST_TYPEOF(q_length::m()/q_time::s()) my_func1()
     return q_length::m(1) / q_time::s(1);

int main()
    q_length::m m(1);
    q_time::s t(1);
    BOOST_AUTO(v, m/t);
    std::cout << v <<'\n';

    BOOST_TYPEOF(m/t) f1;
    std::cout << f1 <<'\n';

    q_velocity::m_div_s v1 = my_func1();

Boost list run by bdawes at, gregod at, cpdaniel at, john at