
Hi, I tried to read the source code to figure out how BOOST_TYPEOF works. But I still don't understand how it works. Can somebody tell me how it works? Thanks, Peng

AMDG Peng Yu wrote:
I tried to read the source code to figure out how BOOST_TYPEOF works. But I still don't understand how it works. Can somebody tell me how it works?
It works in 3 different ways depending on your compiler. 1) If your compiler has a typeof operator, Boost.Typeof uses that. 2) If your compiler has a specific bug that allows certain class templates to be specialized on the fly, Boost.Typeof uses this capability to associate each type with a unique integer and get something to the effect of typename get_associated_type<sizeof(get_size(T))>::type where get_size is defined as template<class T> char (&get_size(const T&))[get_associated_int<T>::value]; 3) If all else fails, Boost.Typeof associates a unique integer with each type/class template. (This is what BOOST_TYPEOF_REGISTER_TYPE and friends are for). Then, every type can be represented as a sequence of integers. This sequence of integers is retrieved using sizeof. In Christ, Steven Watanabe
participants (2)
-
Peng Yu
-
Steven Watanabe