Tipo de retorno del operador condicional y búsqueda en dos fases

Considere el siguiente fragmento:

struct Base { };
struct Derived : Base { };

void f(Base &) { std::cout << "f(Base&)\n"; }

template <class T = int>
void g() {
    Derived d;
    f(T{} ? d : d); // 1
}

void f(Derived &) { std::cout << "f(Derived&)\n"; }

int main() {
    g();
}

En este caso, creo que la función llama af&nbsp;a// 1&nbsp;debe buscarse en la fase uno, ya que el tipo de su argumento es inequívocamenteDerived&, y así se resolverá af(Base&)&nbsp;cuál es el único en alcance.

Clang 3.8.0 está de acuerdo conmigo, peroGCC 6.1.0 noy difiere la búsqueda def&nbsp;hasta la fase dos, dondef(Derived&)&nbsp;es recogido

¿Qué compilador es el correcto?