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.

Reply via email to