On 05/28/2014 10:00 PM, Paolo Carlini wrote:
Hi again,
On 05/28/2014 07:06 PM, Paolo Carlini wrote:
(In case I would have also to double check something weird I was
seeing if the injection happens for all method types...)
In the meanwhile I investigated the reason of all those regressions I
was seeing when injecting in all METHOD_TYPEs: while handling, eg,
from cpp0x/access02.C:
template<class T>
struct foo_argument
{
template<class Ret, class C, class Arg>
static Arg test(Ret (C::*)(Arg));
...
};
Just wanted to add that I spent some time analyzing what we do for the
above and things seem in good shape: the first time we call
tsubst_function_type on Ret (C::)(Arg) we don't know the type of C and
we do not inject. Then we work again on it, when we actually know the
types of Ret, C, and Arg, and then we inject, and tsubst_function_type
returns a fully substituted fntype, an (int) (base::) (int).
Paolo.