
"Andy Little" <andy@servocomm.freeserve.co.uk> wrote David Abrahams wrote
Arkadiy's typeof from the Boost Files area at yahoogroups: http://tinyurl.com/32mlf
(BTW tinyurl died when I tried it direct... look for typeof.zip 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. regards 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" #define BOOST_TYPEOF_REGISTRATION_GROUP \ BOOST_TYPEOF_USER_GROUP +1 BOOST_TYPEOF_REGISTER_TYPE(pqs::q_length::m); BOOST_TYPEOF_REGISTER_TYPE(pqs::q_time::s); // 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; BOOST_TYPEOF_REGISTER_TYPE(anonymous_velocity);
#undef BOOST_TYPEOF_REGISTRATION_GROUP 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(); }