... forgot the testcase, sorry.
Paolo.
//////////////////////
// PR c++/50870
// { dg-options "-std=gnu++0x" }
template <class V>
struct impl
{
template <class T> static T create();
};
template <class T, class U, class V, class
= decltype(impl<V>::template create<T>()
-> impl<V>::template create<U>())>
struct tester { };
tester<impl<float>*, int, float> ti;
template <class T, class U, class V, class
= decltype(impl<V>::template create<T>()
-> impl<V>::template create<U>())>
int test() { return 0; }
int i = test<impl<float>*, int, float>();