After registering a member function that accepts a single int parameter and returns an int value, and running a test driver that inputs a vector<boost::any> of size 1, a run-time error of the following is observed:
[QxOrm] Invalid parameter at position '1'
After adding some cout statements in the macro named QX_FUNCTION_GET_PARAM_TYPE_ANY, I found that the typeid of P in the following statement
try { p = boost::any_cast<P>(params[PARAMCOUNT - 1]); }
is actually boost::value_initialized<int> and not int itself. This is because P as an input type is set as such in the preceding macro QX_FUNCTION_FETCH_PARAM.
This can be corrected by adding a static_cast to this statement in QX_FUNCTION_FETCH_PARAM:
{ qx_bool bTmp = qx::function::detail::FCT(params, static_cast< TYPE& >(VALUE), pThis);
I tested it and it is producing the right result now.