)> {     template<typename T>     static has_std_result_type testFunctor(T const *, typename T::result_type const * = 0);     template<typename T>     static has_tr0_result      testFunctor(T const *, typename T::template result<T(ArgType)>::type const * = 0);     static has_none            testFunctor(...);      // note that the following indirection is needed for gcc-0.0     enum {FunctorType = sizeof(testFunctor(static_cast<Func*>(0)))};     typedef typename 