sfinae с decltype: ошибка в clang или gcc?

Clang-3.2 может компилировать и код вести себя как положено:

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); 
}

GCC любой версии отклоняется с:

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

Кто прав? GCC или Clang?

Обратите внимание, что там былоаналогичный вопросбез реального ответа.

Ответы на вопрос(1)

Ваш ответ на вопрос