template<typename __type>
struct __qacpp_remove_reference
{
 typedef __type __result;
};
template<typename __type>
struct __qacpp_remove_reference<__type &>
{
 typedef __type __result;
};
#define __typeof__(__expr) typename __qacpp_remove_reference<decltype((__expr))>::__result
#define __typeof __typeof__
