Llamar a la función miembro `this` desde lambda genérico - clang vs gcc

Problema: pasando una lambda genérica(a una función de plantilla) que capturathis y llama a una función miembro dethis sin un explícitothis-> no se compila en gcc. Si el lambda no es genérico, o si el lambda no se pasa a ninguna otra función pero se llama en su lugar, se compila con un comando explícitothis->. Clang es genial con el código en todas las situaciones.

Tiempo para otra ronda declang vs gcc. ¿Quién tiene la razón?

Ejemplo de Wandbox

template<typename TF>
void call(TF&& f)
{
    f(1);   
}

struct Example
{        
    void foo(int){ }

    void bar()
    {
        call([this](auto x){ foo(x); });
    }
};

int main()
{
    Example{}.bar();
    return 0;
}
Conbar() = call([this](auto x){ foo(x); });clang ++ 3.6+compila.g ++ 5.2+no compila

error: no se puede llamar a la función miembro 'void Ejemplo :: foo (int)' sin llamada al objeto ([this] (auto x) {foo (x);}); `

Conbar() = call([this](auto x){ this->foo(x); });clang ++ 3.6+compila.g ++ 5.2+compilaConbar() = call([this](int x){ foo(x); });clang ++ 3.6+compila.g ++ 5.2+compilaConbar() = [this](auto x){ foo(x); }(1);clang ++ 3.6+compila.g ++ 5.2+compila

Porque es elthis-> necesario solo en el caso de una lambda genérica?

Porque es elthis-> no es necesario si la lambda no se pasa acall?

¿Quién no cumple con los estándares?

Respuestas a la pregunta(1)

Su respuesta a la pregunta