sfinae com decltype: bug no clang ou no gcc?

Clang-3.2 pode compilar e codificar se comportar como esperado:

struct have_f { int f(int i) {return 10;} }; 

struct empty {};

template <class T> 
struct outer {
        T t; 

        // if T have f(), define  outer_f()
        template<class U=decltype(t.f(1))> 
        int outer_f(int i) { return t.f(i); }
};

int main() {
        outer<have_f>  o1;
        outer<empty>   o2;

        // to silence unused var warning
        return  o1.outer_f(10) + sizeof(o2); 
}

O GCC de qualquer versão rejeita com:

t.cc:13:6: error: ‘struct empty’ has no member named ‘f’
  int outer_f(int i) { return t.f(i); }
      ^

Quem está correto? Gcc ou Clang?

Note que houvepergunta semelhante, sem resposta real.

questionAnswers(1)

yourAnswerToTheQuestion